实现方法
1.设置目标元素作为定位参照
1
2
3
|
.border {
position
:
relative
;
}
|
2.给目标元素添加一个伪元素before或者after,并设置绝对定位
1
2
3
4
|
.
border
:before {
content
:
""
;
position
:
absolute
;
}
|
3.给伪元素添上1px的边框
1
|
border
:
1px
solid
red
;
|
4.设置伪元素的宽高为目标元素的2倍
1
2
|
width
:
200%
;
height
:
200%
;
|
5.缩小0.5倍(变回目标元素的大小)
1
2
|
transform-origin:
0
0
;
transform: scale(
0.5
,
0.5
);
|
6.再把border包进来
1
|
box-sizing: border-box;
|
简言之就是先放大再缩回来,border-box是关键,否则边框不会一起缩放
完整代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
.border {
position
:
relative
;
}
.
border
:before {
content
:
""
;
/* 注意这里为双引号 */
position
:
absolute
;
width
:
200%
;
height
:
200%
;
border
:
1px
solid
#ff0000
;
border-radius:
5px
;
/* 也可以设置圆角 */
-webkit-transform-origin:
0
0
;
-moz-transform-origin:
0
0
;
-ms-transform-origin:
0
0
;
-o-transform-origin:
0
0
;
transform-origin:
0
0
;
-webkit-transform: scale(
0.5
,
0.5
);
-ms-transform: scale(
0.5
,
0.5
);
-o-transform: scale(
0.5
,
0.5
);
transform: scale(
0.5
,
0.5
);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
|