伪元素写竖线_用伪元素画出太极图

本博客介绍了如下内容:

1、伪元素的特征;

2、如果不通过伪元素,普通小白画八卦图方法;

3、如何通过伪元素装逼方法来画八卦图方法;

4、介绍了渐变色的生成工具和动画生成工具;

5、伪元素的注意问题。

6、还有其他,留给未来忘记这部分的自己和你看的。

伪类和伪元素​developer.mozilla.org
4685c9dd5c74120c91f7ef1160a08f21.png

哪些元素有伪元素:只要是非空的元素都有伪元素,如果是空元素就没有伪元素。

比较通俗的特征:

1、前面有两个冒号,比如::after或者::before,如果只有一个冒号就是伪类;

2、通常会配合content属性来为该元素添加装饰内容;

3、这个虚拟元素默认是行内元素,但是可以设置display。

4、在浏览器的输出效果上无法选中。

67ff68bde2ba17dd836b56cf57693797.png

1、不用伪元素的情况来画一个阴阳图:

画一个圆

954ceb6d37153b9ba288e0df701e7025.png

然后在画阴阳的黑白颜色,这里可以通过两个div来写,也可以借助工具更快。就用下面的颜色生成器工具就行了。

Ultimate CSS Gradient Generator from ColorZilla​www.colorzilla.com

7d12189a3f725de044d1f1bc0f3aa009.png

八卦图就简单的设置两种颜色,黑白。

63bb3a1b8902c7981d8399c1961d4523.png

复制代码到CSS后,显示的效果。

e03f3855d75fd3e92b2776e03e30b5f3.png

接下来在big类里面在设置两个圆分别是small1和small2。

这两个圆使用绝对定位,自身用position:absolute;父级big类用position:relative.

然后调整位置,可以通过margin、padding调整。

也可以通过top、bottom、left、right根据定位的父级元素来调整,使用top、bottom、left、right的前提是必须设置了position不为static的前提,默认position就是static。

比如直接使用top来调整,或者使用position:static;也就是默认下用top、bottom、left、right是不可以的,比如设置为position:static;没有任何反应。

e20f15fbdaa267aa7f41e8fa30d22f38.png

默认情况也是没有任何反应。

ed628fb81a59a84bbb49c16fbc011c2c.png

设置position为别的属性,比如absolute就可以产生效果。

7bfbabd9fbc51f0c27d04af77df9c57b.png

这样就明白如何调整位置了,通过调整之后显示两个小圆。

9f146eea24e97bce6c9b6dd314570d75.png

删除边框,增加body背景方便看到八卦图,增加两个小圆的背景色。

efe214b4ded4e252144bfb7f7c8de86a.png

同样的,再增加DIV来画两个更小的圆。这个时候,position的父级已经有position:absolute定位了,所以不用在设置position:relative,如没有就必须要设置。

同样调整宽高,上下左右的距离去掉边框,增加背景颜色就出来啦。

8abaf394458e887f2c5a4c508931ef53.png

普通的画八卦图结束啦。


2、咱们用伪元素在画一遍。

伪元素的特征前面说过,这里根据代码和图形在来看一遍部分特征。

把内部的四个DIV都删除,直接注释掉也OK,根据文档流方向,之前的small1在small2前面。也就是small1是before,small2是after.

然后.small1修改为.big::before,.small2修改为.big::after。其他的可以保持不变。

65da4822c8af45d4c4dc73976220abd7.png

为什么没有效果呈现呢?

1、因为伪元素::before和::after必须要加上content才可以显示,如果没有内容也必须设置一个空的,比如content:'';

f353469edf3a27d2e493759bf95d1972.png

增加了还是没有反应,还得满足一个条件。

2、::before和::after本身是内联的伪元素,前面说到过。

bda7be696d491bde25f6a054ab4b0a33.png

5995d1b8be6c97f0364764e8d94a8298.png

display: block;设置后就显示出来了。

此时因为把绝对定位注释了,所以位置偏了。

c5a024b1c285c53e7e7f3431164983b1.png

display: inline-block;设置后就显示出来了。

此时因为把绝对定位注释了,所以位置偏了。

367bdd0351be1cd722360d2d3dd6959f.png

两个条件满足就可以显示出来。

为了满足位置要求,我们把绝对定位不注释。

并且取消掉display: inline-block和display: block;

结果还是会显示,而且还满足了位置要求。

1f09478e577e0768d76ef675dd974d4b.png

这个原因就是如果设置了display为非static的前提下,因为static是默认的。

比如设置了绝对定位display:absolute;这样内联元素会自动变成块级元素。

另外display:fixed也可以,其他的暂时没有效果。

be6375de74c055249befbbf61548e541.png

继续完善,里面还有两个小圆,下一个特征,::before里面还可以加子元素吗,比如增加一个子元素::before。

::before里面增加一个子元素::before。设置content为1111,设置block,没有任何效果。

e3d1f9a772ea49e45fca3d12edf72ca6.png

里面的小圆介绍两种方法来调整出来。

第一个方法使用前面说到的颜色渐变工具:

42544100b3ee6026b50ec406bc6514c2.png

复制代码到伪元素之后显示效果。

d0182b846c2f4263bf48018ae359db67.png

同样把before也使用渐变工具。只需要把两边的颜色调换就满足了。

ee9f432714e5889c633da7dff57e6c0b.png

复制渐变的代码到before里面后,效果还不错哦。

1a1a5bb7938632f0dcdb02cc2f2e6888.png

小圆用渐变工具到这里结束。


第二个方法就是可以用border,并且设置box-sizing:border-box;,把border的边框设置粗一点就OK啦。

因为设置了box-sizing:border-box;所以呢,设置了宽度就会自动调整内部大小,如果是content-box就需要自己手动调整哦。

边框设置40px,里面的小圆就是100-40-40=20px啦。

f1cc18fcc7e00c89323cf1a60d5c937e.png

第三个方法就是还是用border,但是不设置box-sizing:border-box,或者设置为默认的content-box。

如果不使用box-sizing:border-box,默认就是content-box。就需要调整宽高为20px×20px。

25c2c63f3e91656f1d21637573c9ed3b.png

具体box-sizing:border-box和box-sizing:content-box区别见下面链接:

bomber:CSS中的content-box 与 border-box 的区别​zhuanlan.zhihu.com

静态图这里结束。


然后加一点旋转动画效果。

animation​developer.mozilla.org
4685c9dd5c74120c91f7ef1160a08f21.png
使用 CSS 动画​developer.mozilla.org
4685c9dd5c74120c91f7ef1160a08f21.png

查询MDN可以直接看代码拷贝过来就行了。

66e9ce2d105c23596ca6cab4f742584f.png

增加一个关键帧@keyframes。

把margin-left和width修改为旋转的效果,transform。然后找到一个次数。

a32cc0bf252fd5214a07b94c94d01d2e.png

3b5828adc4d2313324dd1f5e94773a39.png

设置animation-iteration-count:infinite;就可以无限次数重复。

59fd18ee6383042f4ec4ff2472ab44ce.png

看看动画效果:

eaa4c8b2e8d4666e1cbd4c93ddc38547.png
非匀速旋转八卦图https://www.zhihu.com/video/1069344384646094848

继续找匀速设置动画

4d70c36d274c1bd4c298cb42f71536b5.png

增加animation-timing-function:linear;为线性匀速。

863ef146d899ed62dd3e23a8ee28b6b2.png

b0b56feddf602aeda0c9324b12c9cdc7.png

看看增加匀速后的动画效果:

b9a301136683a64936c267715086a11b.png
匀速旋转八卦图https://www.zhihu.com/video/1069344458251825152

当然不查MDN通过工具也是可以达到动画效果的。

下面链接就是动画的CSS工具哦:

CSS3 Keyframes Animation Generator​cssanimate.com

这里可以设置各种参数:

如果就想普通的无限次数均速旋转,转一次4秒就这样设置。

efa013fae76030ea77b36fd060ab5898.png

cec7341c0c6cedbd9558037c0a397276.png

工具在线动画生成效果:

7414a30d837753e284b2f2cad4f5e87f.png
工具在线动画生成效果https://www.zhihu.com/video/1069349830593265664

复制代码到需要用的css中,然后html中需要增加一个类名:

8b99c988f74815b271edc1023f56cb1b.png

使用工具生成的代码复制到CSS中,在html中增加类名

再来看看效果吧:

e8e824227ce8f296df4a7c96f22afef9.png
使用工具生成的代码动画https://www.zhihu.com/video/1069350129030504448

八卦图或者其他形状的源代码可以在这里查询,有各种形状的源代码资源:

bomber:用CSS做三角形​zhuanlan.zhihu.com

animation也有简写:

animation​developer.mozilla.org
4685c9dd5c74120c91f7ef1160a08f21.png

本文为本人的原创文章,著作权归本人和饥人谷所有,转载务必注明来源

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值