如何用css3实现半像素边框

今天小编遇到一个头疼的问题,如何实现一个半(0.5)像素的边框

像一个像素的边框,我们很容易解决,直接一个border:1px solid red;就很容易实现了

那么我们直接一个border:0.5px solid red;不就解决实现0.5像素的边框问题了吗?

答案是不行的,因为border的with只能是自然数


所以我们要运用到CSS3中伪类元素来解决这一问题


思路:

1.设置目标元素作为定位参照

.connet{
			position: relative;  
			width: 100px;height: 100px;
		}

2.给目标元素添加一个伪类元素before或者after,并设置为绝对定位

.connet:after{   
			content: '';
			position: absolute;  
		}

3.为伪类元素添加1px的边框

.connet:after{   
			
			border: 1px solid red;
		}

4.设置伪类元素的宽高为目标元素的2倍

.connet:after{  
			
			width: 200%;height: 200%;
		}

5.将伪类元素缩小0.5倍(变回目标元素的大小)

.connet:after{   
			transform-origin:0 0;   
			transform: scale(0.5,0.5);
		}


 6.把border包进来(意思就是先放大再缩回来,border-box是关键,否则边框不会一起缩放) 

.connet:after{   
			
			box-sizing:border-box;
		}

其具体代码为

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<style type="text/css">
		#box{   /*此元素作为参照比较*/
			width: 150px;height: 150px;
			border: 1px solid red;
			padding: 10px;
		}
		.connet{
			position: relative;  /*设置目标元素作为定位参照*/
			width: 100px;height: 100px;
		}
		.connet:after{   /*给目标元素添加一个伪类元素before或者after*/
			content: '';
			position: absolute;  /*设置绝对定位*/
			border: 1px solid red;/*为伪类元素添加1px的边框*/
			width: 200%;height: 200%;/*设置伪类元素的宽高为目标元素的2倍*/
			transform-origin:0 0;    /*伪类元素缩小0.5倍(变回目标元素的大小)*/
			transform: scale(0.5,0.5);
			box-sizing:border-box; /*把border包进来*/
		}
	</style>
	<body>
		<div id="box">
			<div class="connet">	
			</div>
		</div>
	</body>
</html>


其运行效果图如下


明显的看到实现了0.5像素边框



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值