CSS中容易忽略的知识点集锦

CSS中的一些冷知识

长度单位

在CSS样式层叠表中,我们可使用到的长度单位一般有如下的几种方式:

  1. 像素:px
  2. 百分比
  3. em: 这是一个相对单位,是相对于当前元素的字体大小进行计算,也就是说 1em=1font-size
  4. rem: 这也是一个相对单位,不同的是,rem是相对于根元素的字体大小进行计算的。
伪类和伪元素

伪类:用来描述一个元素的特殊状态 :hover:active等等
伪元素:用来描述一个元素的特殊匹配位置 如 ::before::after等等

其实,伪类和伪元素的出现都是为了格式化文档树以外的信息,也就是说,伪类和伪元素是用来修饰不在文档树中的部分,比如,一句话中的第一个字母,或者是列表中的第一个元素。

伪类用于当已有的元素处于某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。比如说,当用户悬停在指定的元素时,我们可以通过:hover来描述这个元素的状态。

伪元素用于创建一些不在文档树中的元素,并为其添加样式。它们允许我们为元素的某些部分设置样式。比如说,我们可以通过::before来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。

在伪类中有一个需要注意的知识点,就是**:nth-child(n)** 与 **:nth-of-type(n)**的区别。

    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        ul div:nth-child(1) {
            /* 先找到 ul 里面的第一个孩子 然后在判断元素 div  */
            width: 100px;
            height: 100px;
            background-color: burlywood;
        }

        ul div:nth-child(2) {
            /* 没有页面效果 */
            /* 是因为当找到 ul 的第二个孩子时 发现元素不匹配 */
            width: 100px;
            height: 100px;
            background-color: chartreuse;
        }

        ul div:nth-of-type(2) {
            /* 将 ul 里面所有 div 类型的孩子排序 并找到第二个 */
            width: 100px;
            height: 100px;
            background-color: coral;
        }
    </style>
</head>

<body>
    <ul>
        <div>1</div>
        <li>2</li>
        <li>3</li>
        <div>4</div>
        <li>5</li>
    </ul>

可以总结为:
xxx:nth-child(n): 先找第n个孩子,然后匹配xxx元素:
xxx:nth-of-type(n):先找出所有的xxx元素,然后再得到第n个孩子

另外,扩展一下链接伪类的使用:
1.a:link 选择未被访问的链接
2.a:visited 选择已经被访问过的链接
3.a:hover 鼠标指针位于其上的链接
4.a:active 鼠标按下未弹起的链接
注意以上链接伪类的顺序:link visited hover active

常见的元素隐藏方法

-(1)使用 display:none;隐藏元素,渲染树不会包含该渲染对象,因此该元素不会在页面中占据位置,也不会响应绑定的监听事件。

-(2)使用 visibility:hidden;隐藏元素。元素在页面中仍占据空间,但是不会响应绑定的监听事件。

-(3)使用 opacity:0;将元素的透明度设置为 0,以此来实现元素的隐藏。元素在页面中仍然占据空间,并且能够响应元素绑定的监听事件。

-(4)通过使用绝对定位将元素移除可视区域内,以此来实现元素的隐藏。

-(5)通过 z-index 负值,来使其他元素遮盖住该元素,以此来实现隐藏。

-(6)通过 clip/clip-path 元素裁剪的方法来实现元素的隐藏,这种方法下,元素仍在页面中占据位置,但是不会响应绑定的监听事件。

-(7)通过 transform:scale(0,0)来将元素缩放为 0,以此来实现元素的隐藏。这种方法下,元素仍在页面中占据位置,但是不会响应绑定的监听事件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值