如何用div绘出有尖角的一个div框

html-css034

如何用div绘出有尖角的一个div框,第1张

尖角在上面

代码:

<html>

<head>

<title>尖角div</title>

<style type="text/css">

#top

{

width:400px

height:250px

border:3px solid /* 边框宽度为3px */

position:relative

}

.sp1,.sp2

{

display:block

height:0px

width:0px

position:absolute

font-size:0

line-height:0

}

.sp1

{

top:-9px /* 它的绝对值加上span的边框宽度等于div边框宽度的5倍 */

left:40px /* 它来确定尖角的位置 */

border-top:0px

border-bottom:6px solid black /* 注意颜色的变化 */

border-right:6px solid white

border-left:6px solid white

}

.sp2

{

top:6px /* 是自身边框宽度的2倍 */

left:-3px/* 是自身边框宽度的-1倍 */

border-top:0px

border-bottom:3px solid white

border-right:3px solid black

border-left:3px solid black

}

</style>

</head>

<body>

<div id="top">

<span class="sp1">

<span class="sp2"></span>

</span>

</div>

</body>

</html>

尖角在下面

代码:

<html>

<head>

<title>尖角div</title>

<style type="text/css">

#bottom

{

width:400px

height:250px

border:3px solid /* 边框宽度为3px */

position:relative

}

.sp1,.sp2

{

display:block

height:0px

width:0px

position:absolute

font-size:0

line-height:0

}

.sp1

{

bottom:-9px /* 它的绝对值加上span的边框宽度等于div边框宽度的5倍 */

left:40px /* 它来确定尖角的位置 */

border-bottom:0px

border-top:6px solid black /* 注意颜色的变化 */

border-right:6px solid white

border-left:6px solid white

}

.sp2

{

bottom:6px /* 是自身边框宽度的2倍 */

left:-3px/* 是自身边框宽度的-1倍 */

border-bottom:0px

border-top:3px solid white

border-right:3px solid black

border-left:3px solid black

}

</style>

</head>

<body>

<div id="bottom">

<span class="sp1">

<span class="sp2"></span>

</span>

</div>

</body>

</html>

尖角在左边

代码:

<html>

<head>

<title>尖角div</title>

<style type="text/css">

#left

{

width:400px

height:250px

border:3px solid /* 边框宽度为3px */

position:relative

}

.sp1,.sp2

{

display:block

height:0px

width:0px

position:absolute

font-size:0

line-height:0

}

.sp1

{

left:-9px /* 它的绝对值加上span的边框宽度等于div边框宽度的5倍 */

top:40px /* 它来确定尖角的位置 */

border-left:0px

border-top:6px solid white /* 注意颜色的变化 */

border-right:6px solid black

border-bottom:6px solid white

}

.sp2

{

left:6px /* 是自身边框宽度的2倍 */

top:-3px/* 是自身边框宽度的-1倍 */

border-left:0px

border-top:3px solid black

border-right:3px solid white

border-bottom:3px solid black

}

</style>

</head>

<body>

<div id="left">

<span class="sp1">

<span class="sp2"></span>

</span>

</div>

</body>

</html>

尖角在右边

代码:

<html>

<head>

<title>尖角div</title>

<style type="text/css">

#right

{

width:400px

height:250px

border:3px solid /* 边框宽度为3px */

position:relative

}

.sp1,.sp2

{

display:block

height:0px

width:0px

position:absolute

font-size:0

line-height:0

}

.sp1

{

right:-9px /* 它的绝对值加上span的边框宽度等于div边框宽度的5倍 */

top:40px /* 它来确定尖角的位置 */

border-right:0px

border-top:6px solid white /* 注意颜色的变化 */

border-bottom:6px solid white

border-left:6px solid black

}

.sp2

{

right:6px /* 是自身边框宽度的2倍 */

top:-3px/* 是自身边框宽度的-1倍 */

border-right:0px

border-top:3px solid black

border-bottom:3px solid black

border-left:3px solid white

}

</style>

</head>

<body>

<div id="right">

<span class="sp1">

<span class="sp2"></span>

</span>

</div>

</body>

</html>

理论上也是可以的,做两个“钩子”,如下

CSS代码:

<style type="text/css">

.aa{ position:relativetop:-40pxwidth:0pxheight:0pxborder:20px solid rgba(0,0,0,0) border-left:20px solid #000overflow:hidden}

.bb{ position:relativeleft:10pxwidth:0pxheight:0pxborder:20px solid red border-left:20px solid #fffoverflow:hidden}

</style>

HTML代码

<div class="bb"></div>

<div class="aa"></div>

这个在火狐里是正常的。但是也有其他问题,比如rgba的颜色代码不是所有浏览器都支持的

CSS3中都只有圆角处理。这个目前只能用图片,而且用CSS3处理出来的(圆角和文字阴影)都有很多浏览器不兼容(主要是IE6)兄弟,你还是用图片处理吧。这个是这类特殊形状的唯一处理方式。如果是考虑刷新速度的话,你应该充图片的切割,以及JS运行效率上更多的考虑些。