height: 80px
width: 250px
background-color: #FFC800
margin: 50px
border-radius: 15px
transform: perspective(20px) rotateX(-1deg) rotateY(-2deg) translateZ(0)
}
border-radius:12px
圆角 为零则为直角
梯形 [元素变形]
transform:
perspective [透视距离]
rotateX [横向.x轴旋转]
rotateY [竖向.Y轴旋转]
translateZ [Z轴移动,可以理解为放大和缩小]
了解这些基本的变形用法,就可以实现 【梯形】,
但复杂一些就没办法了,要用到SVG或Canvas,
问题:css3做圆角右边是圆角左边是直角
解答:注意css改动这里,nav ul li{ float:left margin:0 20px background-color:#999border-radius:10px 0 0 10px -moz-border-radius:10px 0 0 10px font-size:30px}
理解:border-radius属性
1)border-radius:10px等价于:border-top-left-radius:10pxborder-top-right-radius:10pxborder-bottom-right-radius:10pxborder-bottom-left-radius:10px
2)border-radius:1px 2px 3px 4px 等价于:border-top-left-radius:1pxborder-top-right-radius:2pxborder-bottom-right-radius:3pxborder-bottom-left-radius:4px
纠错:您的html代码不全,我补全并修改后的代码如下,请查看~
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html charset=utf-8" />
<title>Apple</title>
<style>
body{ background-color: #F2F2F2}
header {background-color:#333border-radius:10px}
nav{ display:block background-color:#333 width:840px margin:0 50px 0 0 padding:0 10px 20px 5px}
nav ul { list-style:none background-color:#999}
nav ul li{ float:left margin:0 20px background-color:#999border-radius:10px 0 0 10px -moz-border-radius:10px 0 0 10px font-size:30px}
nav ul li a{ color:#FFF text-decoration:none font-size:20px }
nav ul li a:hover{color:#000 text-decoration:none border-bottom:1px solid #ff5400 padding-bottom:2px}
</style>
</head>
<body>
<header>
<nav>
<div>
<ul>
<li><a>Apple</a></li>
<li><a>在线商店</a></li>
<li><a>Mac</a></li>
<li><a>ipod</a></li>
<li><a>iphone</a></li>
<li><a>ipad</a></li>
<li><a>iTunes</a></li>
<li><a>技术支持</a></li>
</ul>
</div>
</nav>
</header>
</body>
</html>
上下左右4条边,最关键的一点:每两条边的相交处是斜线的相交的。
如果不渲染成斜线,那么写浏览器内核解析css的程序员要纠结了:上边该压着左边线还是右边线,谁压谁都不合理啊,最简单的是弄成斜线等分,还不必去写判断谁该压着谁的程序代码。
于是,就给用边框创造梯形、三角形留下了空间,其他三条边颜色设置为透明或none,剩下的就是梯形或三角了,至于直角梯形,第6个div是,观察第4个div的 none 起了什么作用,再看div6,相信你就明白了。上图的代码:
<div id="div1">1</div><div id="div2">2</div>
<div id="div3">3</div>
<div id="div4">4</div>
<div id="div5">5</div>
<div id="div6">6</div>
<style>
div{
float: leftmargin: 10px
border-top: 30px red solid
border-bottom: 30px blue solid
border-left: 30px yellow solid
border-right: 30px green solid
}
#div1{width: 0height: 0}
#div2{width: 30pxheight: 0}
#div3{width: 30pxheight: 30px}
#div4{
width: 30px
border-top: none
}
#div5{
border-top: transparent 30px solid
border-bottom: 30px blue solid
border-left: transparent 30px solid
border-right: transparent 30px solid
}
#div6{
width: 50px height: 0
border-top: none
border-bottom: 40px blue solid
border-left: transparent 30px solid
border-right: none
}
</style>