近期在做各大公司Web前端笔试题的时候,收获颇丰,让我感受强大的CSS的魅力,真的好神奇!


下面是一个demo:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        #demo {
            width: 100px;
            height: 100px;
            background-color: #fff;
            position: relative;
            border: 2px solid #333;
        }
        #demo:after,#demo:before {
            border: solid transparent;
            content: ' ';
            height: 0;
            left: 100%;
            position: absolute;
            width: 0;
        }
        #demo:after {
            border-width: 10px;
            border-left-color: #fff;
            top: 20px;
        }
        #demo:before {
            border-width: 12px;
            border-left-color: #000;
            top: 18px;
        }
    </style>
</head>
<body>
    <div id="demo"></div>
</body>
</html>

将这段代码保存成.html文件,放入浏览器中运行,你会发现一个非常有个性的图片:

是不是很神奇!

这里是用css中的伪类元素(:before和:after)来实现的,:before和:after的作用就是在指定的元素内容(而不是元素本身)之前或之后插入一个包含content属性指定内容的行内元素。


再来一枚栗子,八卦图,哈哈:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
        #yin-yang {
            width: 96px;
            height: 48px;
            background: #eee;
            border-color: red;
            border-style: solid;
            border-width: 2px 2px 50px 2px;
            border-radius: 100%;
            position: relative;
        }

        #yin-yang:before {
            content: "";
            position: absolute;
            top: 50%;
            left: 0;
            background: #eee;
            border: 18px solid red;
            border-radius: 100%;
            width: 12px;
            height: 12px;
        }

        #yin-yang:after {
            content: "";
            position: absolute;
            top: 50%;
            left: 50%;
            background: red;
            border: 18px solid #eee;
            /*这里换成border-radius:50%发现效果是一样的*/
            border-radius:100%;
            width: 12px;
            height: 12px;
        }
    </style>
</head>
<body>
    <div id="yin-yang"></div>
</body>
</html>

其中学到的小技巧不仅仅包括伪类元素的使用,还有如何“画”一个圆,用border-radius来控制就好了,一般设置成50%或100%都能达到画圆的效果。效果图如下:

图片描述

好啦,今天学到得不少呢,继续怀挺!


要成为wp专家
19 声望3 粉丝

坚持不一定可贵,找到适合自己的才是王道!