利用滑动门原理制作圆角和渐变色按钮【css】

      在说明方法之前,先看一下效果图:


      在border-radius出现之前,实现圆角效果使用的是滑动门。滑动门是利用背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果。

       要想让滑动门适用于多种场合,左右两个角必须透明,以此露出背景颜色,若是左右压中间,左右角的透明部分露出的是中间的颜色,所以只能改成中间压左右,中间部分可以重叠,已达到宽度自适应的效果。

       切图技巧,可以将按钮的背景图分为三个部分,一个部分是左边带有圆角的部分,一个部分是中间的,最后一个部分是右边带有圆角的部分,然后将三个部分的图拼接成雪碧图,这样可以直接通过定位实现图片的选择。注意:因为要将三个图拼成一张图,所以除了高度一致外,最好宽度也是一样的,效果图如下:


接下来讲解代码的实现部分:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>利用滑动门制作渐变按钮</title>
    <style>
        body,ul,p,h1,h2,h3,h4,dl,dd,form,input,textarea,select {
            padding:0;
            margin:0;
            font-family:arial;
        }
        li {
            list-style:none;
        }
        img {
            border:none;
        }
        a {
            text-decoration:none;
        }
        a:hover {
            text-decoration:underline;
        }
        .box{
            margin:100px auto;
            width: 100%;
            background-color: #970e02;
        }
        #nav{
            width:960px;
            height: 36px;
            margin:0 auto;
            padding-top:8px;
        }
        #nav li{
            float: left;
            height: 28px;
            margin-left:2px;
        }
        #nav a{
            float: left;
            height: 28px;
            text-decoration: none;
            line-height: 28px;
            font-size: 15px;
            font-family:Arial;
            color:#fff;
            text-align: center;
        }
        #nav strong{
            float: left;
            height: 28px;
            font-weight: normal;
        }
        #nav span{
            float: left;
            height: 28px;
            padding:0 16px;
        }
        #nav a:hover,#nav .active a{
            background:url("../images/nav_active_bg.png") repeat-x 0 -56px;
        }
        #nav strong:hover,#nav .active strong{
            background: url("../images/nav_active_bg.png") no-repeat;
        }
        #nav span:hover,#nav .active span{
            background: url("../images/nav_active_bg.png") no-repeat right -28px;
        }
    </style>
</head>
<body>
<div class="box">
    <ul id="nav">
        <li class="active"><a href="#"><strong><span>HOME</span></strong></a></li>
        <li><a href="#"><strong><span>LATEST ARRIVALS</span></strong></a></li>
        <li><a href="#"><strong><span>MEN'S</span></strong></a></li>
        <li><a href="#"><strong><span>WOMEN'S</span></strong></a></li>
        <li><a href="#"><strong><span>KIDS</span></strong></a></li>
        <li><a href="#"><strong><span>BRANDS</span></strong></a></li>
        <li><a href="#"><strong><span>SALE</span></strong></a></li>
        <li><a href="#"><strong><span>GIFT CARDS</span></strong></a></li>
        <li><a href="#"><strong><span>FREEBIES</span></strong></a></li>
    </ul>
</div>
</body>
</html>
        为了方便,所以直接将css样式放在了html文件中,平时在写代码的过程中最好能有外联样式表,这样修改和看代码比较容易。

      本案例中用滑动门实现圆角和渐变色的按钮的原理是:将标签a包围标签strong和span,因为层级的关系,a的层级是在最下面,那么当strong和span的层级可以覆盖a标签,所以就是将a标签的背景图片置为按钮中间可以重叠的部分,然后沿着x轴进行重复,strong标签的背景图片置为左边圆角的部分,span标签的背景图片置为右边圆角的部分,这样就可以左右圆角覆盖中间的部分,实现按钮的基本样式。这个过程中还有最重要的一点是,需要将a  strong  span的float都写成left,这样才不会出现中间有缝隙。

      如果span中的内容越长,那么内容就会撑开按钮的宽度,自让而然的就让按钮自适应了。除此之外,我设置了鼠标经过事件和激活事件,即当鼠标经过按钮的时候,按钮就会出现如图所示的效果。

      另外需要说的一点是,如何定位雪碧图的位置。background的定位其实是position,这个定位的方法有两种,一种是具体的数值,一种是直接用位置的英文拼写,在之前的文章中也写到了这个属性的使用方法,详情请看HTML5基础之代码入门。position的定位是通过x和y轴的位置进行定位的。如下所示,

         x: left  center  right
        y: top   center  bottom
或者
x: ##px
y: ##px


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值