避免锯齿线的非梯度解决方案(小提琴)
我一直在寻找与@Serg Hospodarets 答案完全相同的东西,但我意识到渐变正在创建一条锯齿线,可能是浏览器的渲染问题。所以经过一番搜索和摆弄后,我做了这个。
摘要:
我使用Johan Rönnblom在这里回答的间隔技术以 1:1 的比例计算相对于高度的宽度,然后我在 div 的边缘添加 2 个框,其父元素高度的 50% 和宽度等于 50%创建完美的正方形,然后我将子元素旋转 45 度,创建对角线切割。
下面是完整的代码:
HTML
<div class="box">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Porro, esse assumenda corporis nemo perspiciatis dolorem vero consectetur asperiores necessitatibus, ea, saepe fugit alias, voluptatum blanditiis quia! Consequatur dolorem, consectetur adipisci.
<div class="u-prop">
<div class="wrap">
<img class="spacer" width="2048" height="2048" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
<div class="proportional"></div>
</div>
</div>
<div class="u-prop is--bot">
<div class="wrap">
<img class="spacer" width="2048" height="2048" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">
<div class="proportional"></div>
</div>
</div>
</div>
SCSS:
body {
padding: 10px;
}
* {
box-sizing: border-box;
}
.box {
padding: 10px;
width: 500px;
position: relative;
background: #eee;
&:before {
content: '';
display: block;
width: 100%;
height: 100%;
border: 1px solid #000;
position: absolute;
top: 0;
left: 0;
box-sizing: border-box;
border-right: solid -0px transparent;
}
}
.u-prop {
position: absolute;
height: 50%;
width: 100%;
top: 0;
left: 100%;
&.is--bot {
top: 50%;
.proportional {
transform: rotate(-45deg);
transform-origin: bottom left;
&:before {
border-bottom: 1px solid #000;
border-top: none;
}
}
}
.spacer {
width: auto;
max-height: 100%;
visibility: hidden;
}
.proportional {
position: absolute;
top: 0;
left: 0px;
width: 150%;
height: 0;
padding-bottom: 100%;
background: #eee;
transform: rotate(45deg);
transform-origin: top left;
&:before {
content: '';
display: block;
width: 100%;
height: 100%;
border-top: 1px solid #000;
position: absolute;
top: 0;
left: 0;
box-sizing: border-box;
}
}
.wrap {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: auto;
max-width: 100%;
overflow: hidden;
}
}