css伪元素&伪类的妙用

:hover和:focus显示浮层      hover是鼠标晃过   focus是元素聚焦时       +:紧邻的下一个兄弟选择器   ~:所有的后面兄弟选者器

 css

复制代码
img{
        visibility: hidden;
        position: absolute;
        transition: visibility .2s;  /** 设置延时 **/
    }
    a:hover + img,
    img:hover{
        visibility: visible;
    }
复制代码

html

<a href="javascript:;">图片链接</a>
<img src="./images/1.jpg" alt="">

在移动端时,没有鼠标,需要用focus伪类选者器来实现

a:focus + img,
img:focus{
    visibility: visible;
    transition: none;
}

 

纯CSS实现下拉列表(二级菜单)

事实上,在下拉列表中。我不建议使用“非父子关系的并列元素” —— 如果你只是单纯的使用css的话。问题就出在focus上::focus 只有在当前元素处于聚焦状态时才匹配。那么,这就需要一系列方案去单纯的解决这个问题,比如上面设置transition延时就是为了这个效果。但其实这还是“不算问题的问题”:因为浏览器支持了新规范::focus-within,它规定“在当前元素或是当前元素的任意子元素处于聚焦状态时都会匹配”!它本质上是一种“父选择器行为”:

css

复制代码
.cs-list{
        display: none;
        position: absolute;
        border: 1px solid red;
        background-color: #fff;
    }
    .y-table:focus-within .cs-list{
        display: block;
    }
复制代码

 

html

复制代码
    
<div class="y-table">
    <a href="javascript:;" class="y-msg">我的消息</a>
    <div class="cs-list">
         <a href="javascript:;">我的回答</a>
         <a href="javascript:;">我的私信</a>
         <a href="javascript:;">我的订单</a>
         <a href="javascript:;">我的关注</a>
         <a href="javascript:;">我的收藏</a>
     </div>
</div>
复制代码

 

::after和::before的场景   比较常用,但是这个loading效果挺不错的,记录一下

css

复制代码
.loading{
        width: 100px;
        height: 100px;
        box-sizing: border-box;
        border-radius: 50%;
        border-top:5px solid #ff0000;
        position: relative;
        animation:a1 1s linear infinite;
    }
    .loading::before,.loading::after{
        content: "";
        width: 100px;
        height: 100px;
        position: absolute;
        left:0;
        top:-5px;
        box-sizing: border-box;
        border-radius: 50%;
    }
    .loading::before{
        border-top:5px solid #10AEFF;
        transform: rotate(120deg);
        /* 顺时针旋转120度 */
    }
    .loading::after{
        border-top:5px solid #5456db;
        transform: rotate(240deg);
        /* 顺时针旋转240度 */
    }
    .loading span{
        position: absolute;
        width: 100px;
        height: 100px;
        font-size:13px;
        color:#000;
        text-align: center;
        line-height: 100px;
        animation: a2 1s linear infinite;

    }
    @keyframes a1{
        to{
            transform: rotate(360deg);
        }
    }
    @keyframes a2{
        to{
            transform: rotate(-360deg);
        }
    }
复制代码

 

html

<div class="loading">
    <span>loading...</span>
</div>

效果

 

 

 

 

 

 

 

posted @   古墩古墩  Views(249)  Comments(0Edit  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示