纯CSS实现丝带上扬效果

本文介绍了一种使用CSS hover效果实现的立体上扬导航栏的设计方法,通过调整margin-top属性使导航项上升,并利用伪元素创造出立体阴影效果。文章还详细解释了如何通过嵌套a标签和span标签隐藏不必要的样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用hover动作改变divmargin-top可以使小模块向上走,同时在小模块的屁股下面放两个沿对角线分成两种颜色的正方形,相对小模块绝对定位,便可以制造出简单的立体上扬效果。
丝带的两头和上扬的阴影部分用border实现就可以了。


不过有一个细节需要注意:
如果是导航条的话,div里放a标签,a标签里还要再放span标签;我之前也觉得多此一举,结果证明这个span是大有用处的。
因为a必须要比span高,然后overflow:hidden,才能把魔术不该露出来的部分遮住,该露出来的部分留有余地。
然后spandiv:beforediv:after需要设置margin-top为正,margin-top的值正好等于aspan高出来的值。
hover动作的时候再设置margin-top:0px;,屁颠屁颠往上走。
那你说,我spandiv:beforediv:after都不设置margin-tophover动作的时候再设置margin-top为负,数值等于aspan高出来的值,可不可以呢?
不可以!
图片描述

图片描述

第一种情况,a多出来的部分是往上走的,魔术才能成功;
钻牛角尖的情况呢,a多出来的部分往下走,走光了有没有?
事实证明啊,喜欢钻牛角尖的女生最受欢迎了yeah!
图片描述

html代码:

<div>
    <a href="#"><span>青龙</span></a>
    <a href="#"><span>白虎</span></a>
    <a href="#"><span>玄武</span></a>
    <a href="#"><span>朱雀</span></a>
</div>

css代码:

div{
    width:500px;
    margin:200px auto 0px;
}
div:before{
    content:"";
    border:25px solid;
    border-color:#ccc #ccc #ccc transparent;
    margin-top:10px;
    float:left;
}
div:after{
    content:"";
    border:25px solid;
    border-color:#ccc transparent #ccc #ccc;
    margin-top:10px;
    float:left;
}
div span{
    display:inline-block;
    width:100px;
    line-height:50px;
    margin-top:10px;
    text-align:center;
    background:#ccc;
    position:relative;
    transition: background-color 0.5s, margin-top 0.3s;
}
div a{
    color:#000;
    text-decoration:none;
    height:60px;
    overflow:hidden;
    float:left;
}
div span:before{
    content:"";
    border-right:10px solid #000;
    border-bottom:10px solid #ccc;
    position:absolute;
    top:50px;
    left:0px;
}
div span:after{
    content:"";
    border-left:10px solid #000;
    border-bottom:10px solid #ccc;
    position:absolute;
    top:50px;
    right:0px;
}
div a:hover span{
    margin-top:0px;
    background:#0cf;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值