首页>前端教程>CSS教程

PC端的鼠标经过样式在移动端如何去掉?

PC端一般都会做很多鼠标经过的样式,比如文字变色,图片变大,显示隐藏等效果。

但是到了移动端,鼠标经过效果变成了点击之后出现,还伴随一个半透明的灰色背景。

其实,在做页面之前,我们就要思考,这个效果是PC端鼠标悬停时的效果,在移动端没有悬停的时候又应该是什么样子?

最好的解决方案就是利用Media Queries Level 4出现的any-hover或者hover这种媒体查询了。

比如,下面这张图,在PC端只显示图片,鼠标经过图片放大并显示标题。点击图片看效果。


12.jpg

到了移动端,就直接显示标题,图片也不变大了。

13.jpg

这样就避免了设置了hover效果,在移动端又要去掉它带来的重复劳动。

还有移动端链接点击的时候带一个半透明的灰色背景,也可以用-webkit-tap-highlight-color: transparent;去掉,不过这个属性是非标准,只在chrome和edge上生效,在firefox上无效,不过考虑到国情,也可以直接用了。

代码如下:

    <style>
        body {
            /* 非标准,不过chrome和edge都支持,firefox不支持,可以去掉点击链接出现的半透明灰色背景 */
            -webkit-tap-highlight-color: transparent;
        }
        body,
        figure {
            margin: 0;
            padding: 0;
        }
       
        img {
            vertical-align: middle;
        }

        .pro {
            width: max-content;
            margin: 50px auto;
            overflow: hidden;
        }

        .pro-a {
            display: block;
            position: relative;
        }

        .pro-title {
            position: absolute;
            width: 100%;
            background-color: rgba(0, 0, 0, 0.5);
            color: #fff;
            padding: 1em;
            box-sizing: border-box;
            left: 0;
            bottom: 0;
            /* transform的变形都是基于元素本身,100%表示的是元素自身的高度 */
            transform: translateY(100%);
            transition: 0.2s;
        }
        /* 当设备有悬停效果时,出现鼠标悬停的效果,在PC端有用,在移动端无用 */
        @media (any-hover:hover) {
            .pro-a:hover .pro-title {
                transform: translateY(0);
            }

            .pro-a:hover .pro-img {
                transform: scale(1.05);
            }

            .pro-img {
                transition: 0.2s;
            }
        }
        /* hover和any-hover都是Media Queries Level 4出现的,功能差不多,hover要早出来一点,所以支持的浏览器版本更低一些 */
        /* 当设备没有悬停效果时,移动端使用这个样式 */
        @media (hover:none) {
            .pro-title {
                transform: translateY(0);
            }

            .pro-a:hover .pro-img {
                transform: scale(1);
            }
        }
    </style>
</head>

<body>
    <figure class="pro">
        <a href="#" class="pro-a">
            <img src="images/fengjing.jpg" alt="" class="pro-img">
            <figcaption class="pro-title">产品标题</figcaption>
        </a>
    </figure>
</body>


点赞


1
保存到:

相关文章

发表评论:

◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。

Top