html - CSS - 在没有子元素的情况下更改类文本的 css 背景

标签 html css wordpress

我正在开发一个基于定期更新的 wordpress 主题的元素,因此我无法更改 HTML(无论如何都不会造成维护困难)。我添加了一个样式表,允许我更改网站的外观,我所要做的就是在每次更新时添加一个“include”。

我有一个可用性日历,显示如下: Calendar current

如您所见,“31”几乎看不见。

html 输出:

<td class="calendar-end" data-curent-date="1564531200">
31
</td>

我想编辑文本的 css 以添加反向渐变(红色部分为白色,白色部分为灰色),以便文本可以正确阅读。在下面查看我的 CSS

background: linear-gradient(135deg,  #ffffff 0%,#ffffff 48%,#4d5567 48%,#4d5567 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;

这给出了以下结果(当通过 chrome 检查器向元素添加 <p> 标签并为其提供 css 规则时)

Calendar desired

我的问题是,我不知道如何为文本创建规则,因为它不是子元素。

通常我会用 <p> 吞没 31标签,以便我可以为 .calendar-end p 创建规则但由于 HTML 限制,这是不可能的......

有没有一种我不知道的方法可以通过特定的 css 规则影响 td 内的文本? 如果我尝试将我的代码应用于 .calendar-end class 它会导致与背景渐变的冲突,我最终得到完全不可见的文本(与背景相同的渐变)

我不确定我的要求是否可行,但 css 不是我的强项,我希望这里有人比我更了解这个主题 :D

感谢大家的帮助!

最佳答案

使用 chrome,你可以考虑像下面这样的多个背景(不适用于 firefox,raised a bug)

.calendar-end {
  color: transparent;
  background: 
    linear-gradient(135deg, #ffffff 48%, #4d5567 48%),
    linear-gradient(135deg, red 48%, #fff 48%);
  -webkit-background-clip: 
    text,
    padding-box;
  background-clip: 
    text,
    padding-box;
  width:100px;
  height:100px;
  font-size:100px;
}
<div class="calendar-end" data-curent-date="1564531200">
  31
</div>

对于其他浏览器,考虑一个伪元素。只需确保不向主元素指定任何 z-index 以将伪元素放在后面(相关:Why can't an element with a z-index value cover its child?)

.calendar-end {
  background: 
    linear-gradient(135deg, #ffffff 48%, #4d5567 48%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  width:100px;
  height:100px;
  font-size:100px;
  position:relative;
  
}
.calendar-end:before {
  content:"";
  position:absolute;
  z-index:-1;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background: linear-gradient(135deg, red 48%, #fff 48%);
}
<div class="calendar-end" data-curent-date="1564531200">
  31
</div>

如果文本和背景的渐变相同,您可以优化如下代码:

.calendar-end {
  background-image: 
    linear-gradient(135deg, #ffffff 49%, #4d5567 50%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  width:100px;
  height:100px;
  font-size:100px;
  position:relative;
  
}
.calendar-end:before {
  content:"";
  position:absolute;
  z-index:-1;
  top:0;
  left:0;
  right:0;
  bottom:0;
  background-image: inherit;
  transform:rotate(180deg);
}
<div class="calendar-end" data-curent-date="1564531200">
  31
</div>

关于html - CSS - 在没有子元素的情况下更改类文本的 css 背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57251932/

相关文章:

javascript - onclick 函数不能用于 .append?

mysql - 零星的 wordpress 数据库连接错误。什么故障排除方案?

php - 如何修复手机版的背景图片没有覆盖整个页面?

html - 输入顶部边框在 windows chrome 中消失

jquery - 使用 jQuery 目录 - 页面内容太长

html - 在 firefox 上播放动画时文本闪烁

html - IE水平滚动问题

javascript - 在 WordPress 上安装 Farbtastic

html - 如何使用底部的水平滚动条使表格彼此正确对齐

javascript - 按钮无法触发 jquery ui 中的幻灯片