【发布时间】:2020-10-11 11:14:29
【问题描述】:
我有以下 html sn-p:
<div class="account_button account_button2">Login</div>
现在我只想使用 CSS 更改该内容(“登录”)。 (因为我不允许更改 HTML 文件,我只能写一个 CSS Overwrite 文件)
所以我用这个 css 代码更改了内容:
.account_button {
visibility: hidden;
}
.account_button:after {
content: 'Login / Register';
visibility: visible;
}
这绝对有效。但现在是棘手的部分。
如果用户已经登录到以下内容(span 元素添加到 html),则通过 Javascript 更改提到的 html 截图:
<div class="account_button account_button2"><span>Username</span></div>
我的 CSS 覆盖也会覆盖该值。我怎样才能避免这种情况?我只想更改 DIV 元素的值,而不是在某些情况下通过 Javascript 添加的 SPAN 元素。
感谢您的任何想法!
编辑:稍微澄清一下: 我有两个“html 状态”:
1.)
<div class="account_button account_button2">Login</div>
这是通过上面的 css 更改为显示“登录/注册”。
2.)
<div class="account_button account_button2"><span>Username</span></div>
如果JS把html改成这个,上面的CSS也会显示“登录/注册”。如果存在跨度标签,我希望它显示值。如果它们不存在,我想显示“登录/注册”。
【问题讨论】:
-
不幸的是,CSS 中没有父选择器。看来你需要 JavaScript
-
在 CSS 级别,您需要知道用户是否已登录。没有办法解决这个问题。必须修改登录 JS 以切换指示用户登录状态的某些 CSS 类(如果尚未定义某些类)。另外,我怀疑您当前的解决方案效果绝对好,因为隐藏的文本可能不可见,它仍然占用“登录”文本长度的空间。
-
感谢您的信息。所以有没有办法只通过 CSS 做到这一点?它可以工作,因此无论是否添加了 标签或值只是在标签内,它总是显示“登录/注册”......我需要的是一种告诉 css“只更改 div 的内容,但如果在 div 中添加 span 则不会".. :-/你可以对span使用绝对定位,这样当span被添加时,它会覆盖其他设置的文本?
标签: html css text replace css-selectors