CSS笔记

发布时间 2023-05-20 16:00:03作者: ~画风人~
.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" 色调的效果去除掉,变回元素默认的颜色。