html - CSS 变量:输入:焦点未设置变量
问题描述
我有这个简单的例子:
<html>
<head>
<style>
:root {
--textbox-box-shadow: none;
}
.example3 {
display: block;
border: 1px solid red;
padding: 10px;
box-shadow: var(--textbox-box-shadow);
}
.example3 input:focus {
--textbox-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px red;
}
</style>
</head>
<body>
<div class="example3">
Enter your name : <input>
</div>
</body>
</html>
我试图让'div'在它里面的输入元素被聚焦时发光。
代码不起作用,我不知道为什么。
顺便说一句,当给变量一个初始值
inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px red;
而不是“none”时,div 会发出红光。
我该如何解决?
编辑:
事实证明,这实际上创建了一个名为“textbox-box-shadow”的新局部变量。
.example3 input:focus {
--textbox-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px red;
}
<div class="example3">
问题仍然存在,当输入以纯 CSS 为焦点且不使用 javascript(如果可能的话)时,如何使外部 div发光?
解决方案
新的 CSS 伪类:focus-within
将是实现这一目标的最佳方法。
: focus-within 伪类匹配匹配 :focus 自身或具有匹配 :focus 的子元素的元素。
:root {
--textbox-box-shadow: none;
}
.example3 {
display: block;
border: 1px solid red;
padding: 10px;
box-shadow: var(--textbox-box-shadow);
}
.example3:focus-within {
--textbox-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px red;
}
<div class="example3">
Enter your name : <input class="ip">
</div>
推荐阅读
- mysql - 如何使用 MySQL 或批处理文件创建文件名,其中部分文件内容需要在名称中?
- javascript - Twitter AP 在 tweet_mode: "extended" 后截断推文
- ubuntu-14.04 - 如何取消设置特定环境变量的值?
- ios - 水平stackView中imageView和标签之间的水平间距
- angular - 如何向/从 ngx-bootstrap 模式传递和接收数据?
- proxy - MITMPROXY 使输出对文件具有可读性
- php - 使用 php 在主页上显示名称(来自 mySQL 的数据)
- angularjs - 如何在 angularJS 移动网站中录制视频和音频
- go - 为什么将遍历从按顺序更改为前/后顺序会使“练习:等效二叉树”中的答案错误?
- dust.js - 同时访问嵌套数组中的外部和内部索引