如何使用纯CSS3实现一个3D商品标签

html-css025

如何使用纯CSS3实现一个3D商品标签,第1张

[html] view plain copy

<div class="fancy">

<h2>

<span class="ribbon-center">50% OFF!</span>

</h2>

<p>

<img src="/uploads/160501/glass.jpg">

Check out these killer deals from Oakley!

Get an additional 50% off sale items for a limited time.

</p>

</div>

接下来给卡片和商品描述添加样式,来限定高宽和间距:

[css] view plain copy

.fancy {

width: 340px

margin: 20px auto 20px auto

background: #E7E7E7

padding: 15px

}

.fancy p {

padding-top: 10px

margin: 5px 0

line-height: 1.5

}

.fancy img {

width: 340px

}

blob.png

现在页面看起来像上面这样,接下来就是要给标签(h2元素)添加样式,一个是背景色,一个是左边的3D折纸效果。

折边效果其实就是给h2的左下角拼接一个三角形的元素,我们使用伪元素来实现,代码如下:

[css] view plain copy

.fancy h2 {

font-style: italyc

line-height: 1

padding: 5px 0

color: #FFF

margin: 0

width: 205px

left: -35px// 相对卡片向左偏移35px

background-color: #e54439

position: relative

z-index: 6

}

.fancy h2:after {// 定义一个斜三角形

content: ""

width: 0

height: 0

position: absolute

font-size: 0

line-height: 0

z-index: 5

border-top: 0 solid transparent

border-bottom: 15px solid transparent

bottom: -15px

}

.fancy h2:after {

border-right: 20px solid rgb(230, 107, 97)

left: 0

}

.fancy h2 .ribbon-center {

display: block

padding: 10px 0

background-color: #e54439

}

根据这张图片看总体是左右分布,那么先得写个左右板块,但板块最好都不要设置高,因为并不知道到底有多少商品。然后左边可以用<ul><li>,右边上面是热门品牌,下面是手机通讯,所以可以考虑再分个上下板块,也不要设置高,也可以用<ul></li>。大体就这样。

块元素的之间的间距使用margin属性设置。

CSS margin 属性

定义和用法

margin 简写属性在一个声明中设置所有外边距属性。该属性可以有 1 到 4 个值。

说明

这个简写属性设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度。

块级元素的垂直相邻外边距会合并,而行内元素实际上不占上下外边距。行内元素的的左右外边距不会合并。同样地,浮动元素的外边距也不会合并。允许指定负的外边距值,不过使用时要小心。

注释:允许使用负值。

例子 1

margin:10px 5px 15px 20px

/*

上外边距是 10px

右外边距是 5px

下外边距是 15px

左外边距是 20px

*/例子 2margin:10px 5px 15px

/*上外边距是 10px

右外边距和左外边距是 5px

下外边距是 15px*/

例子 3

margin:10px 5px

/*

上外边距和下外边距是 10px

右外边距和左外边距是 5px

*/

例子 4

margin:10px

/*所有 4 个外边距都是 10px*/

可能的值