意外之喜:伪元素结构轻松实现上下点击的联动效果

在这里插入图片描述
::after和::before是虚拟元素,不会影响真正元素的所在文档的位置
原理:::after和::before不是真正的节点,所以我们取不到他们,也不发设置点击等用户事件。::after和::before虽然是不能设置事件,但还会捕获用户事件,并把事件“冒泡”到伪元素所在的元素上。之所以“冒泡”二字加了引号,是因为他不是真的冒泡,更准确的说::after和::before帮所在元素去捕获去事件,事件的srcElement对象是伪元素所在的元素,而不是伪元素本身。

html

                <div class="strategy-content-month">
                    <div>
                        <a href="javascript:;">1月</a>
                        <a href="javascript:;">2月</a>
                        <a href="javascript:;">3月</a>
                        <a href="javascript:;">4月</a>
                        <a href="javascript:;" class="active">5月</a>
                        <a href="javascript:;">6月</a>
                        <a href="javascript:;">7月</a>
                        <a href="javascript:;">8月</a>
                        <a href="javascript:;">9月</a>
                        <a href="javascript:;">10月</a>
                        <a href="javascript:;">11月</a>
                        <a href="javascript:;">12月</a>
                    </div>
                    <div><img src="./images/line.png" alt=""></div>
                </div>

css

.strategy-content-month>div a::after {
    content: '';
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: -69%;
    width: 10px;
    height: 10px;
    border-radius: 100%;
    background-color: #ccc;
}

/* border做的三角图标,本身三角符号就不属于文档,使用伪元素做三角符最合适不过了 */
.strategy-content-month>div a::before {
    display: none;
    content: '';
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: -18%;
    border-top: 8px solid #1ab2db;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
}

jquery

    // strategy-content-month && strategy-content-type
    $('.strategy-content-month a').on('click', function() {
        $(this).addClass('active').siblings().removeClass();
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鳕鱼&羚羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值