CSS绘制伤心小人

246 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

相对定位(relative)

相对定位是指以元素默认位置为起点,移动元素到一个新的位置,此时的top,left,right,bottom都是相对于元素默认位置计算的。

绝对定位(absolute)

绝对定位是以父元素的位置作为起点计算的,且父元素必须是被定位过的(所以绝对定位是作用在子元素上的),如果父元素未被定位过,就看父元素的父元素是否被定位过,直至找到一个被定位过的祖先,若找遍了都没有,就以整个窗口body为父元素。

固定定位(fixed)

它可以不随页面滚动而移动。 使用:

position:fixed;
left:20px   <!--调整该元素固定位置距左侧距离-->

元素因为定位重叠的时候,z-index的值越大越靠上显示。

示例:伤心小人

image.png

DOM结构
<figure class="man">
    <div class="head"></div>
    <div class="body"></div>
    <div class="feet"></div>
</figure>

.man使用相对定位position:relative,3个子元素都使用绝对定位position:absolute,用.feet::before和.feet::after两个伪元素表示两只脚。

<style type="text/css">
    .man{
	width: 12em;
	height: 33em;
	font-size: 10px;
	position: relative;
	color: gray;
	margin: 5em;		
	}
    .head{
	position: absolute;
	width: 7em;
	height: 7em;
	background-color: currentcolor;
	border-radius: 50%;
	right: 0;
	}
	.body{
	position: absolute;
	width: 6.2em;
	height: 14.4em;
	background-color: currentcolor;
	top: 7em;
	border-radius: 100% 20% 0 0;
	}
	.feet::before,
	.feet::after {
	content: "";
	position: absolute;
	width: 4em;
	height: 1.4em;
        background-color: currentcolor;
        bottom: 0;
	left: -1.6em;
	border-radius: 1em 80% 0.4em 0.4em;
	}
	.feet::after{
            transform: translateX(5.6em) translateY(-0.6em) rotate(4deg);
	}
</style>

transform属性可以把元素平移,旋转,缩放,扭曲等

平移函数translate()

水平平移:translateX(0.5em)【沿水平方向移动0.5em】

垂直平移:translateY(50%) 【值是百分比的话,定位是以父元素为100%进行计算,但translate是以自身尺寸为100%进行计算的】

旋转函数:rotate(),它接收一个角度值参数,表示元素被旋转的角度(用正负表示顺逆时针旋转)