css-哆啦A梦

2020/3/4 21:00
        晚上又看了下代码,布局十分杂乱,主要是过度依赖absolute定位来实现居中和对称,以及由此导致的body,wrapper父元素高度塌陷问题(虽然并不会影响图形,但还是感觉处理下比较好)。
        重构了下,尽量采取margin:auto实现居中,并且通过给父元素设置尺寸解决了父元素高度塌陷的问题,通过使用float来实现手臂和脚趾的对称,由于同时使用了float:left和float:right,因此一行被占满,所以不需要考虑清除浮动。效果相同,详情见下一篇博客。
================== 分割线 =======================
最近看css的书籍,看到书上有个哆啦A梦的图片,但是没有代码,写了下,就是直线比较多优点呆板:)
效果:
效果

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>哆啦A梦</title>
	<style type="text/css">
		body{ position: relative;}
		#wrapper{
			position: absolute;
			left: 50%;
			margin-left: -151px;
			top: 100px;
			display: inline-block;
		}
		.clearfix:after{
			clear: both;
			content: "";
			display: block;
			height: 0;
			visibility: hidden;
		}
		#head{
			position: relative;
			width: 300px;
			height: 300px;
			background-color: rgb(2,156,226);
			border: 1px solid silver;
			border-radius: 150px;
		}
		#face{
			position: absolute;
			top: 50px;
			left: 25px;
			width: 250px;
			height: 250px;
			background-color: white;
			border: 1px solid silver;
			border-radius: 125px;
		}
		#necktie{
			position: absolute;
			left: 50%;
			margin-left: -111px;
			bottom: 30px;
			height: 20px;
			width: 220px;
			border-radius: 10px;
			background-color: rgb(213,4,35);
			border: 1px solid silver;
		}
		#body{
			position: absolute;
			bottom: -90px;
			width: 210px;
			height: 120px;
			border: 1px solid silver;
			left: 50%;
			margin-left: -105px;
			background-color: rgb(2,156,226);
		}
		#foot-left, #foot-right{
			position: absolute;
			bottom: -20px;
			width: 120px;
			height: 20px;
			border-radius: 10px;
			border: 1px solid silver;
			background-color: white;
		}
		#foot-left{	
			left: -25px;
		}
		#foot-right{
			right: -25px;
		}
		#curve{
			position: absolute;
			bottom: -1px;
			width: 30px;
			height: 15px;
			left: 50%;
			margin-left: -15px;
			border: 1px solid silver;
			border-radius: 15px 15px 0 0;
			border-bottom-width: 0;
			background-color: white;
		}
		#belly{
			position: absolute;
			top: -1px;
			left: 50%;
			margin-left: -95px;
			width: 190px;
			height: 95px;
			border: 1px solid silver;
			border-radius: 0 0 95px 95px;
			background-color: white;
		}
		#pocket{
			position: absolute;
			top: 15px;
			left: 50%;
			margin-left: -70px;
			width: 140px;
			height: 70px;
			border: 1px solid silver;
			border-radius: 0 0 70px 70px;
			background-color: white;
		}
		#arm-left,#arm-right{
			position: absolute;
			top: -2px;
			width: 0;
			height: 0;
			border-width:40px;
			border-style: solid;
		}
		#arm-left{
			left: -80px;
			border-color: transparent silver silver transparent;
		}
		#arm-right{
			right: -80px;
			border-color: transparent transparent silver silver;
		}
		#triangle1-left,#triangle1-right{
			position: absolute;
			top: -37.5px;
			width: 0;
			height: 0;
			border-width: 38.3px;
			border-style: solid;
		}
		#triangle1-left{
			border-color: transparent rgb(2,156,226) rgb(2,156,226) transparent;
			left: -37.5px;
		}
		#triangle1-right{
			border-color: transparent transparent rgb(2,156,226) rgb(2,156,226);
			right: -37.5px;
		}
		#triangle2-left,#triangle2-right{
			position: absolute;
			width: 0;
			height: 0;
			border-width: 19px;
			border-style: solid;	
		}
		#triangle2-left{
			border-color: transparent silver silver transparent;
		}
		#triangle2-right{
			left: -39px;
			border-color: transparent transparent silver silver;
		}
		#triangle3-left,#triangle3-right{
			position: absolute;		
			top: -16.5px;
			width: 0;
			height: 0;
			border-width: 18.4px;
			border-style: solid;		
		}
		#triangle3-left{
			left: -17.6px;
			border-color: transparent white white transparent;
		}
		#triangle3-right{
			right: -18.4px;
			border-color: transparent transparent white white;
		}
		#triangle4-left, #triangle4-right{
			position: absolute;		
			top: -39px;
			width: 0;
			height: 0;
			border-width: 8px; 
			border-style:solid;		
		}
		#triangle4-left{
			left: 23.5px;
			border-color: transparent rgb(2,156,226) rgb(2,156,226) transparent;
		}
		#triangle4-right{
			right: 23.5px;
			border-color: transparent transparent rgb(2,156,226) rgb(2,156,226);
		}
		#hand-left,#hand-right{
			position: absolute;
			top: 20px;
			width: 40px;
			height: 40px;
			border:1px solid silver;
			border-radius: 20px;
			background-color: white;
		}
		#hand-left{
			left: -39px;
		}
		#hand-right{
			right: -39px;
		}
		#bell{
			position: absolute;
			top: -20px;
			left: 50%;
			margin-left: -18px;
			width: 32px;
			height: 32px;
			border: 2px solid silver;
			border-radius: 16px;
			background-color: rgb(255,224,51);
		}
		#transverse{
			position: absolute;
			top: 5px;
			left: 50%;
			margin-left: -16px;
			width: 28px;
			height: 4px;
			border: 2px solid silver;
			background-color: transparent;
		}
		#innercircle{
			position: absolute;
			left: 50%;
			margin-left: -5px;
			top: 8px;
			width: 10px;
			height: 10px;
			border-radius: 5px;
			background-color: silver;
		}
		#vertical{
			position: absolute;
			left: 50%;
			margin-left: -1px;
			top: 10px;
			width: 2px;
			height: 8px;
			background-color: silver;
		}
		#left-eye,#right-eye{
			position: absolute;
			left: 50%;
			top: -16px;
			width: 50px;
			height: 50px;
			border: 1px solid silver;
			border-radius: 25px;
			background-color: white;
		}
		#left-eye{
			margin-left: -51px;
		}
		#right-eye{
			margin-left: 1px;
		}
		#left-iris{
			position: absolute;
			top: 15px;
			left: 24px;
			width: 20px;
			height: 30px;
			border-radius: 20px/30px;
			border-top: 2px solid black;
		}
		#right-iris{
			position: absolute;
			top: 12px;
			left: 6px;
			width: 10px;
			height: 20px;
			border-radius: 5px/10px;
			background-color: black;
		}
		#right-pupil{
			position: absolute;
			top: 4px;
			left: 2px;
			width: 4px;
			height: 8px;
			border-radius: 2px/4px;
			background-color: white;
		}
		#mouth{
			position: absolute;
			left: 50%;
			margin-left: -100px;
			bottom: 60px;
			width: 200px;
			height: 100px;
			border-radius: 0 0 100px 100px;
			border: 2px solid black;
		}
		#mouth div{
			position: absolute;
			left: 50%;
			margin-left: -110px;
			top: -2px;
			width: 220px;
			height: 60px;
			background-color: white;
		}
		#mouth #vertical{
			position: absolute;
			left: 50%;
			margin-left: -2px;
			top: -60px;
			width: 2px;
			height: 160px;
			background-color: black;
		}
		#nose{
			position: absolute;
			left: 50%;
			margin-left: -20px;
			top: 20px;
			width: 40px;
			height: 40px;
			border-radius: 20px;
			background-color: rgb(213,4,35);
			border: 1px solid black;
		}
		#nose-inner{
			position: absolute;
			top: 8px;
			left: 6px;
			width: 10px;
			height: 10px;
			border-radius:5px;
			background-color: white;
		}
		#bear1,#bear2,#bear3,#bear4,#bear5,#bear6{
			position: absolute;
			width: 120px;
			height: 2px;
			background-color: black;	
		}
		#bear1{
			top: 70px;
			left: 50%;
			margin-left: -140px;
			transform:rotate(7deg);
		}
		#bear2{
			top: 70px;
			right: 50%;
			margin-right: -140px;
			transform:rotate(-7deg);
		}
		#bear3{
			top: 100px;
			left: 50%;
			margin-left: -140px;	
		}
		#bear4{
			top: 100px;
			right: 50%;
			margin-right: -140px;	
		}
		#bear5{
			top: 130px;
			left: 50%;
			margin-left: -140px;
			transform:rotate(-7deg);
		}
		#bear6{
			top: 130px;
			right: 50%;
			margin-right: -140px;
			transform:rotate(7deg);	
		}
	</style>
</head>
<body>
	<div id="wrapper">
		<div id="head">
			<div id="face">
				<div id="left-eye"><div id="left-iris"></div></div>
				<div id="right-eye"><div id="right-iris"><div id="right-pupil"></div></div></div>
				<div id="mouth">
					<div></div>
					<div id="vertical"></div>
				</div>
				<div id="nose"><div id="nose-inner"></div></div>
				<div id="bear1"></div>
				<div id="bear2"></div>
				<div id="bear3"></div>
				<div id="bear4"></div>
				<div id="bear5"></div>
				<div id="bear6"></div>
			</div>
			<div id="necktie"></div>
		</div>
		<div id="body">
			<div id="arm-left">
				<div id="triangle1-left">
					<div id="triangle2-left"><div id="triangle3-left"></div></div>
					<div id="triangle4-left"></div>
					<div id="hand-left"></div>
				</div>
			</div>
			<div id="arm-right">
				<div id="triangle1-right">
					<div id="triangle2-right"><div id="triangle3-right"></div></div>
					<div id="triangle4-right"></div>
					<div id="hand-right"></div>
				</div>
			</div>
			<div id="belly"><div id="pocket"></div></div>
			<div id="curve"></div>
			<div id="foot-left"></div>
			<div id="foot-right"></div>
			<div id="bell">
				<div id="transverse">
					<div id="innercircle">
						<div id="vertical"></div>
					</div>
				</div>
			</div>
		<p style="position: absolute;bottom: -100px;font-family: 'Times New Roman';font-size: 22px;font-weight: bold;">
			&copy;by xk-wang 2020/3/4</p>
		</div>
	</div>	
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值