如何为图片链接应用滤镜?已访问链接图片灰度化失效问题
问题:已访问链接内图片无法应用灰度滤镜
我尝试为嵌入图片的已访问链接添加样式,期望链接被访问后图片转为灰度效果,但始终无法实现。将样式应用到.image类上时,灰度滤镜也完全无效。我在cargo.site平台使用此代码,不确定是否会造成影响,代码如下:
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="UTF-8"> <style> * { box-sizing: border-box; } .column { background-color: #000; float: left; width: 50%; max-height: 35vw; padding: none; } /* Remove extra left and right margins, due to padding */ .row { margin: 0 -5 0 -5; } /* Clear floats after the columns */ .row:after { content:""; padding: 0; display: table; clear: both; } /* Responsive columns */ @media screen and (max-width: 600px) { .column { width: 100%; min-height: 65vw; } } .container { padding: 0; position: relative; text-align: center; } .image { -webkit-filter: brightness(60%); transition: all .33s ease; } a:hover .image { -webkit-filter: brightness(85%); -webkit-transition: all .33s ease; -moz-transition: all .33s ease; -o-transition: all .33s ease; -ms-transition: all .33s ease; transition: all .33s ease; cursor: pointer; } a:link{ color: #fff; cursor: pointer; } a:visited{ -webkit-filter: grayscale (1); } .title{ font-family: "Helvetica Neue", Helvetica, sans-serif, "Helvetica Neue Regular", Icons; font-size: 10vmin; color: white; position: absolute; opacity: 1; padding: 0; top: 50%; left: 50%; text-align: center; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); transition: all .33s ease; } .date { font-family: "Helvetica Neue", Helvetica, sans-serif, "Helvetica Neue Regular", Icons; font-size: 5vmin; color: white; text-align: center; font-weight: 400; transition: all .33s ease; } </style> <section> <div class="row"> <div class="column"> <div class="container"> <a href="#" rel="history"><img class="image" src="https://freight.cargo.site/t/original/i/9f804a9700e1be685a2f382b246ae88a5d0547a043d90f4fb5526547ad2159a0/FASTLANE_Comrie_62x75cm_Oil-on-Linen_Crop_v02.jpg" style="width: 100%;" alt="Issue 2: Cover Image"> </a> </div> </div> <div class="column"> <div class="container"> <a href="#" rel="history"><img class="image" src="https://freight.cargo.site/t/original/i/c9228501460781092300db921381bddcfdf7376b1d78b1d953fbe30800702051/Cover-image-crop_v01.jpg" style="width: 100%;" alt="Issue 1: Cover Image"> </a> </div> </div> </div> </section>
修复方案
1. 修正滤镜作用对象与语法错误
当前代码把滤镜应用在<a:visited>标签上,而滤镜需要作用于图片元素;同时grayscale (1)的空格是无效语法。修改为:
a:visited .image { -webkit-filter: grayscale(100%); filter: grayscale(100%); }
2. 处理平台样式覆盖(可选)
如果cargo.site的全局样式优先级更高,可临时添加!important测试(不推荐长期依赖):
a:visited .image { -webkit-filter: grayscale(100%) !important; filter: grayscale(100%) !important; }
3. 补充说明
- 浏览器对
:visited伪类有安全限制,但滤镜属性是允许生效的; - 确保
<a>标签的href是真实可被标记为已访问的链接(#锚点可能不会被浏览器记录为已访问,可尝试真实路径测试)。
内容的提问来源于stack exchange,提问作者nat0101
相关产品推荐
相关产品推荐

