Cra*_*non 9 css jquery shape responsive-design css-shapes
我当前试图在CSS中为响应式站点创建三角形,并且无法在stackoverflow上找到一个好的示例,所以这就是我如何做到的.
使角度形状响应有点棘手,因为你不能border在CSS中使用百分比作为值,所以我编写了几个函数来计算页面宽度并相应地调整三角形的大小.第一个计算加载页面时的大小,第二个重新计算页面宽度更改时的大小.
CSS:
.triangle {
width: 0;
height: 0;
border-top: 50px solid rgba(255, 255, 0, 1);
border-right: 100px solid transparent;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div class="triangle"></div>
Run Code Online (Sandbox Code Playgroud)
JS:
$(document).ready(function () {
var windowWidth = $(window).width();
$(".triangle").css({
"border-top": windowWidth / 2 + 'px solid rgba(255, 255, 0, 1)'
});
$(".triangle").css({
"border-right": windowWidth / 1.5 + 'px solid transparent'
});
});
$(window).resize(function () {
var windowWidthR = $(window).width();
$(".triangle").css({
"border-top": windowWidthR / 2 + 'px solid rgba(255, 255, 0, 1)'
});
$(".triangle").css({
"border-right": windowWidthR / 1.5 + 'px solid transparent'
});
});
Run Code Online (Sandbox Code Playgroud)
这是一个jsFiddle - http://jsfiddle.net/craigcannon/58dVS/17/
通过利用根据父级宽度计算的填充来覆盖大的固定宽度三角形,可以仅使用CSS实现响应三角形.要创建100%宽度的向上指向三角形:
.triangle-up {
width: 50%;
height: 0;
padding-left:50%;
padding-bottom: 50%;
overflow: hidden;
}
.triangle-up div {
width: 0;
height: 0;
margin-left:-500px;
border-left: 500px solid transparent;
border-right: 500px solid transparent;
border-bottom: 500px solid green;
}
Run Code Online (Sandbox Code Playgroud)
或者使用伪元素和一个div:
.triangle-up {
width: 50%;
height: 0;
padding-left:50%;
padding-bottom: 50%;
overflow: hidden;
}
.triangle-up:after {
content: "";
display: block;
width: 0;
height: 0;
margin-left:-500px;
border-left: 500px solid transparent;
border-right: 500px solid transparent;
border-bottom: 500px solid #959595;
}
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴.有关这些工作方式以及向下,向左和向右三角形片段的完整说明,请参阅我的关于Pure CSS响应三角形的文章.CSS给出的是一个基本高度比为2的三角形.试图改变三角形的比例,而不知道这些三角形的假响应如何复杂.