训练描述
当鼠标移入到logo上的时候,左侧会滑出一个小房子,当鼠标移出logo的时候,恢复成原来的样子,并且中间的切换是有动画的
训练提示
- logo图标的布局应该是一个div的大盒子,里面包裹了a标签
- 给a标签设置 官网名字,但是不能展示在页面显示(目的是方便搜索引擎)
- 给a标签设置before和after两个伪元素,分别设置不同的背景图片
- 利用偏移让两个盒子水平排列,让有home房子图片的盒子先移出整个大盒子
操作步骤
1. 正常开发中,我们制定logo的时候,首先会先用一个div的大盒子来包裹,然后再div大盒子中放一个a标签的小盒子(目的在于logo是可以被点击的)
2. 在a标签中要写上 官网的名字,但是这个名字不是给用户看的,是为了更好的被搜索引擎搜索到,所以我们会把这个文字进行隐藏
3. 利用今天所学习到的伪元素,给这个a标签设置 before 和after 两个伪元素,分别给这两个伪元素设置背景图片
小米官网
.header-logo { position: relative; }
更改显示模式,这是宽高为 55px,设置溢出隐藏,设置背景颜色(#ff6700),隐藏文字(text-indent: -9999em)
.logo { display: block; width: 55px; height: 55px; overflow: hidden; background-color: #ff6700; text-align: left; text-indent: -9999em; }
设置绝对定位,左上角对齐,宽高为 55px,设置背景图片,设置过渡动画,opacity 透明度为1
/* mi logo的样式 */ .logo::before { /* 定位 */ position: absolute; /* 伪元素必须要设置content属性 */ content: ''; /* 左偏移 */ left: 0; /* 上偏移 */ top: 0; width: 55px; height: 55px; /* 设置过渡 */ transition: all .3s; /* 背景图片 */ background: url(./images/mi-logo.png) no-repeat center center; /* 透明度 */ opacity: 1; }
设置绝对定位,左上角对齐,宽高为 55px,设置背景图片,设置过渡动画,设置margin-left: -55px(刚开始让这个盒子移出整个大盒子,等鼠标移入的时候,可以滑动进来),opacity透明度为0
/* mi home 的样式 */ .logo::after { position: absolute; content: ''; left: 0; top: 0; width: 55px; height: 55px; transition: all .3s; background: url(./images/mi-home.png) no-repeat center center; margin-left: -55px; opacity: 0; }
当鼠标移入的时候,before盒子应该往右边进行偏移,偏移出整个大盒子,设置margin-left 为正值
当鼠标移入的时候,after盒子应该往右边进行偏移,偏移到大盒子的中心,设置margin-left: 0;
同时修改一下透明度;
当鼠标移出的时候,两个伪元素的盒子会恢复初始的状态,然后我们在两个伪元素盒子里面设置了过渡,所以它们就会以动画的形式恢复到初始位置。