.page-header ul {
position: absolute;
right: 2vw;
top: 50%;
transform: translateY(-50%);
}
这段代码用来设置 .page-header 中 <ul> 元素的定位及位置。解释如下:
.page-header ul表示选中.page-header内部的<ul>元素。position: absolute表示该元素会使用绝对定位,以便在视口中保持与父元素的位置无关。right: 2vw表示该元素与父元素右侧外边缘的距离是父元素宽度的 2%(vw 是 viewport width,表示相对于视口宽度的比例)。top: 50%表示该元素与父元素顶部外边缘的距离是父元素高度的 50%。transform: translateY(-50%)表示将该元素在垂直方向上移动到其自身高度的一半位置(因为top:50%是基于该元素的上边缘的位置而不是其中间位置),通过transform属性中的translateY()方法完成。此时,该元素在父元素中上下居中。
.page-header:before {
content: '';
position: absolute;
top: -50%;
left: -10vw;
width: 20vw;
height: 10vh;
background: url('img/title.png') no-repeat left center;
background-size: 100%;
z-index: -1;
transition: all .3s;
}
.page-header:before表示创建一个在.page-header元素之前的伪元素。伪元素是一个虚拟的元素,不在DOM结构中,但能够被CSS选择器选中。content: ''表示在伪元素中没有文字/内容。position: absolute表示绝对定位,根据其包含块来定位,如果没有包含块则相对于body或根元素。top: -50%表示伪元素与父元素顶部的距离是父元素高度的 50%,即向上移动了该元素高度的 50%。left: -10vw表示伪元素与父元素左侧的距离是父元素宽度的 -10%,即向右移动了该元素宽度的 10%。width: 20vw表示伪元素的宽度是父元素宽度的 20%。height: 10vh表示伪元素的高度是父元素高度的 10%。background: url('img/title.png') no-repeat left center表示使用图片img/title.png作为背景图,不重复显示,水平居左,垂直居中显示。background-size: 100%表示图片铺满整个背景。z-index: -1表示伪元素在 z 轴上位于所有其他内容的下方。transition: all .3s表示使用 0.3 秒的时间动画过渡所有属性的变化。
.page-header:hover {
padding-left: .75vw;
transition: all.3s;
}
这段代码是用来设置 .page-header 元素在鼠标悬浮时的过渡效果。解释如下:
.page-header:hover表示当鼠标悬浮在.page-header元素上时,对其本身进行操作。padding-left: .75vw表示鼠标悬浮时,给.page-header元素的左边添加了一个额外的间距,间距大小为 0.75vw。这个额外的间距会导致元素整体右移,也会影响子元素的位置。transition: all .3s表示属性变化的过渡时间是 0.3 秒。这里的all表示对所有属性都进行过渡。如果只想对特定属性进行过渡,在这里指定即可。
.page-header:hover:before {
left: -8vw;
transition: all.3s;
}
这段代码是用来设置 .page-header 元素在鼠标悬浮时,伪元素的位置和过渡效果。解释如下:
.page-header:hover:before表示当鼠标悬浮在.page-header元素上时,对其前面的伪元素生效。left: -8vw表示鼠标悬浮时,伪元素向左移动了 2vw,即相对于之前的位置再向左移动了 2% 的宽度。transition: all .3s表示属性变化的过渡时间是 0.3 秒。这里的all表示对所有属性都进行过渡。如果只想对特定属性进行过渡,在这里指定即可。
.panel .online{
display: inline-block;
float: right;
width: 1vw;
height: 1vw;
background: url('img/online.png') no-repeat center center;
background-size: 100%;
filter: sepia(100%);
}
这段代码为一个CSS class定义了一个在线状态的样式,其中.panel .online指的是一个class类名为"online"的元素在一个class类名为"panel"的父元素下面。该样式通过设置以下的CSS属性来实现一个小图标表示在线状态:
display: inline-block;将该元素设置为行内块元素,使得它可以和其他元素在同一行内显示。float: right;让该元素向右浮动,与其相邻的元素合并,并将其余空间分配给左侧的元素。width: 1vw;宽度设置为屏幕宽度的1%,让这个元素只占用了非常小的空间。height: 1vw;高度设置为屏幕宽度的1%。background: url('img/online.png') no-repeat center center;设置元素的背景图像为"online.png",背景图像的位置在中心。background-size: 100%;确保背景图像能够填充整个元素。filter: sepia(100%);给元素应用了"sepia"色调,使得它看起来略带褐色调。
这段代码最终可以实现在同一行内显示一个小图标,用来表示在线状态。
.online-on {
filter: none !important;
}
这段代码是为一个CSS class类名为"online-on"定义了一个样式。在这个样式中使用了 !important 标记,用于在页面中覆盖所有其他CSS样式。
该样式中只设置了一个CSS属性,即 filter:none。这个属性用来为元素去除之前已设置的滤镜效果。这样就可以将之前被应用的 "sepia" 色调的效果去除掉,变回元素默认的颜色。