选择器是与文档树中的元素匹配的模式。在CSS规则中,它们用于为与模式匹配的元素定义样式。
如何通过 Selenium 和 Python 点击 Instagram 中的“现在不”按钮
我正在尝试使用我当前正在编码的“Instagram 机器人”登录 Instagram。我已经通过登录屏幕,通过“获取应用程序”屏幕以及它想要如何打开通知......
如何使用 Playwright 通过 Xpath/CSS 选择器定位元素
如何使用 Playwright TS/JS 通过 Xpath/CSS 选择器定位元素? Playwright 中有很多定位器(与 Selenium 相比) 例如 getByRole 和 getByText。 有没有像
我尝试使用 Selectolax 选择一些没有类属性的 p 标签,但没有成功。 这是我的代码: 从 selectolax.parser 导入 HTMLParser 树 = HTMLParser( ''' 我尝试使用 Selectolax 选择一些没有类属性的 p 标签,但没有成功。 这是我的代码: from selectolax.parser import HTMLParser tree = HTMLParser( ''' <p class="card_street"> <span class="card_street">123 My Rd. </span> <span class="card_street">Suite 100</span> <span> Anywhere</span> <span>, TX</span> <span> 12345</span> </p> ''' ) tree.css('p[class="card_street"] span:not([class]):nth-child(1)') 给出: [] 但是,tree.css('p[class="card_street"] span:not([class])')选择的是没有class属性的三个span标签: for node in tree.css('p[class="card_street"] > span:not([class])'): print(node.text()) 给出: Anawhere , TX 12345 有人可以告诉我选择没有类属性的第一个、第二个和第三个跨度标签的正确方法吗? 您的代码的返回是正确的,因为您选择了不包含类的元素。不管怎样,我认为使用 Lexbor 代替 Modest 后端来进行 selectolax 的适当改进和更多的可维护性或回购。 from selectolax.lexbor import LexborHTMLParser parser = LexborHTMLParser(content) tree = parser.css('p[class="card_street"] span:not([class])') result = [element.text(strip=True) for element in tree] ['任何地方', ', TX', '12345']
考虑以下 HTML 和 CSS 代码: .main :is(p 节) { 背景:深青色; } 你好 我预计该段落...
我有一个这样的文档: ... 一些元素遵循身体的方向 <... 我有一个这样的文件: <html> ... <body style="direction: rtl;"> <div class="col-ml-auto"> some elements following body's direction </div> ... <div class="col-ml-auto" style="direction: ltr;"> some elements forced to be ltr </div> </body> </html> 我可以使用以下语法选择父方向元素: .col-ml-auto{margin-left:auto} [style*="rtl"] .col-ml-auto{margin-left:unset;margin-right:auto} 它选择普通元素,但内联方向没有效果。 我可以使用以下语法选择内联定向元素: .col-ml-auto{margin-left:auto} .col-ml-auto[style*="rtl"]{margin-left:unset;margin-right:auto} 它选择内联定向元素,但不选择父定向元素,那么如何处理两者? 你不会有一个基于CSS可以设置的选择器,这会创建一个循环。例如,如果我们有一个假设的 :direction() 伪选择器,它对 CSS 设置的方向敏感,那么像 :direction(ltr) { direction: rtl; } 这样的规则会阻止引擎。 但是,即使你所有的方向规则都是在内联 style="" 属性中设置的,并且即使你确定你将 never 拥有类似 style="direction:rtl; direction: ltr;" 的东西,我怀疑你会找到一个能够区分最接近父级匹配 A 的元素以及最接近 B 的元素。 因此,最好的选择可能是在这里利用继承,例如将要设置的所有样式声明为--css-variables。然后,(仍然假设所有方向都是通过 style="" 属性设置的),你可以做类似的事情 [style*=direction][style*=rtl] { --rule-1: rtl-value } [style*=direction][style*=ltr] { --rule-1: ltr-value; } [style*=direction][style*=rtl] { --rule-1: green } [style*=direction][style*=ltr] { --rule-1: red; } * { border: 1px solid var(--rule-1); } <body style="direction: rtl;"> <div class="col-ml-auto"> some elements following body's direction </div> ... <div class="col-ml-auto" style="direction: ltr;"> some elements forced to be ltr </div> </body>
我想使用“:is()”伪 cl 来设置特定的“直接位于主体内部的部分”和“直接位于主体内部的 div 内部的部分”的样式...
我需要设计4个这样的按钮。考虑侧面和按钮侧面是实心的。 该设计类似于披萨切割: 。容器 { 边界半径:50%; 溢出:隐藏; } 。孩子 { ...
请帮我设计这个列表的样式,我需要为每个列表项设置不同的背景图像,但类是相同的。 菜单1 请帮我设计这个列表的样式,我需要为每个列表项设置不同的背景图像,但类是相同的。 <ul> <li class="sameforall">menu 1</li> <li class="sameforall">menu 2</li> <li class="sameforall">menu 3</li> <li class="sameforall">menu 4</li> </ul> 我知道这个,但它只适用于第一个项目:( ul:first-child li{ /*my css*/ } 为什么要给所有的李子上同一个班级? 给 ul 一个类来设置所包含的 li 的样式,然后给 li 自己的类,如下所示: <ul class="sameforall"> <li class="one">menu 1</li> <li class="two">menu 2</li> <li class="three">menu 3</li> <li class="four">menu 4</li> </ul> .sameforall {color: red;} .sameforall .one {background-color: blue;} .sameforall .two {background-color: green;} .sameforall .three {background-color: pink;} .sameforall .four {background-color: purple;} 您无法访问 HTML,CSS3 支持 :nth-child() psuedo 选择 - http://css-tricks.com/how-nth-child-works/ <ul> <li class="sameforall">menu 1</li> <li class="sameforall">menu 2</li> <li class="sameforall">menu 3</li> <li class="sameforall">menu 4</li> </ul> .sameforall:nth-child(1) { background-color: blue; } .sameforall:nth-child(2) { background-color: green; } .sameforall:nth-child(3) { background-color: pink; } .sameforall:nth-child(4) { background-color: purple; } 注意,这在大多数旧浏览器中不起作用。 我会避免使用first-child,因为它没有得到完全支持,而且它在哪里,可能仍然有问题。关于引用其他元素或子元素,最好的办法是给它们一个不同的 id 并使用它来设计它们的样式。像这样: <ul class="sameforall"> <li id='first' >menu 1</li> <li id='second'>menu 2</li> <li id='third' >menu 3</li> <li id='forth' >menu 4</li> </ul> 然后您可以像这样引用 css 文件中的这些元素: #first{/*Your css*/} 如果您想查看 nth-child 的支持浏览器列表,请访问 此页面,其中包含一个表格,其中包含一些最流行的浏览器版本以及它们可能遇到的支持问题。 你需要 :nth-child() 顺便说一句,它应该是 ul li:fist-child 由于您无法更改标记,并且不支持通过 CSS 进行子选择,因此唯一的方法就是使用 JavaScript 来完成此操作。 <ul> <li class="sameforall">menu 1</li> <li class="sameforall">menu 2</li> <li class="sameforall">menu 3</li> <li class="sameforall">menu 4</li> </ul> <script type="text/javascript"> var listItems = document.getElementsByTagName("ul")[0].getElementsByTagName("li"); var numChildren = listItems.length; for(var i = 0; i < numChildren; i++) { var item = listItems[i]; // -> do whatever you want with each item. switch(i) { case 0: item.style.backgroundImage = 'url(item-1.gif);'; break; case 1: item.style.backgroundImage = 'url(item-2.gif);'; break; case 2: item.style.backgroundImage = 'url(item-3.gif);'; break; } } </script> 你需要使用第n个孩子的方法。 这里的内容很详细。希望这对您有帮助。 http://www.w3.org/TR/css3-selectors/ 我有同样的问题,但列表是从表单输入生成的。我该如何处理无限数量的列表条目?
我想做的(显然不是在 IE 中)是: p:not(.list):最后一个子 + :text { 底部边距:10px; } 这将为文本节点提供边距。 (这可能吗?)我如何获得文本
如何将我的CSS更改仅应用到React JS中的一个组件。 CSS 文件包含 body 标签和其他也会影响其他组件的标签
如何将我的CSS更改仅应用到React JS中的一个组件。 CSS 文件包含 body 标签和其他也会影响其他组件的标签。我已将 Id 添加到所需的每个元素中
即使使用相同的CSS,重复的点状图像背景在不同区域以不同尺寸显示
我正在构建一个具有特定设计的目录页面。 根据设计,每个标题后面应该跟有点,直到行尾。 点的大小也会根据时间而变化...
我在.error类中使用了:empty选择器。问题是,即使 div 内没有带有错误类别的内容,错误类别也不会完全删除。 当我在 firebug 中测试时,我
使用 type 或 name 属性应用 css 选择器首类型时出现问题
我正在尝试向除第一个之外的类型为 radio 的输入元素添加 margin-left,但它不适用。我也尝试使用 input[type=radio] 。如果first-of-type 不能实现这一点,我该如何实现
使用“not”伪类来设置所有元素的样式,除了特定元素的子元素之外
标题 1 级标题 正文。 1 级标题 <body> <header> <h1>Title</h1> </header> <h1>Level-1 heading</h1> <p>Body text.</p> <h1>Level-1 heading</h1> <p>Body text.</p> </body> 我想将 <h1> 元素设为红色,除了 <h1> 内的 <header>。我可以用做到这一点 h1 { color: red; } header h1 { color: revert; } ,但也许有更好的方法,使用单个声明而不覆盖?我尝试了:not(header) h1 { color: red; },但由于某种原因它不起作用。另一种方法是body > h1 { color: red; },但对我来说有点脆弱。 我想将 <h1> 元素设为红色,除了 <h1> 内的 <header>。 h1:not(header h1) { color:red } h1:not(header h1) { color: red } <header> <h1>Title</h1> </header> <h1>Level-1 heading</h1> <p>Body text.</p> <h1>Level-1 heading</h1> <p>Body text.</p> body:not(header) > h1 { color: red; } <body> <header> <h1>Title</h1> </header> <h1>Level-1 heading</h1> <p>Body text.</p> <h1>Level-1 heading</h1> <p>Body text.</p> </body> body:not(header) > h1 { color: red; } 这将使所有 <h1> 元素变为红色,除了 <header> 内的元素之外。
是否可以缩进摘要标签下显示的详细信息? 目前,信息与两个标签均左对齐。 详情1 总结... 是否可以缩进摘要标签下显示的详细信息? 目前,信息与两个标签均左对齐。 <details> Details 1 <summary> Summary 1 </summary> </details> <details> <summary> Summary 2 </summary> Details 2 </details> <details> Details 3 <summary> Summary 3 </summary> </details> 我尝试过文本缩进,但它缩进了摘要信息而不是细节。 负边际似乎效果很好。 details { margin-left: 2em; } summary { margin-left: -2em; } <details> Details 1 <summary> Summary 1 </summary> </details> <details> <summary> Summary 2 </summary> Details 2 </details> <details> Details 3 <summary> Summary 3 </summary> </details> 使用边距或填充,您可以设置其样式。带填充的示例: details > summary { background-color: #888; cursor: pointer; padding: .5rem 1rem; } details > summary > * { display: inline; } details > div { border: 2px solid #888; margin-top: 0; padding: 35px; } <details> <div>Details 1 </div> <summary> Summary 1 </summary> </details> <details> <summary> Summary 2 </summary> <div>Details 2 </div> </details> <details> <summary> Summary 3 </summary> <div>Details 3 </div> </details> 对我有用的是,使用 the :not() CSS 伪类,为除摘要之外的所有细节留出左边距,如下面的“添加的 css 规则”所示。 不幸的是,您可能必须继续相信,因为在预览中,运行代码片段不起作用,所以也许它不支持 :not()? /* added css rule */ details > :not(summary) { margin-left: 2em; } <details> Details 1 <summary> Summary 1 </summary> </details> <details> <summary> Summary 2 </summary> Details 2 </details> <details> Details 3 <summary> Summary 3 </summary> </details>
我是初学者,已经开始学习POM。为此,我尝试使用 chrome Webdriver(IntelliJ 中的 gradle prj)创建自动化测试,特别是我尝试定义一个对象
是否有 CSS 选择器允许我根据 HTML 选择选项值选择元素? 1 2 是否有 CSS 选择器允许我根据 HTML 选择选项值选择元素? <select> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <p>Display only if an option with value 1 is selected</p> 我正在寻找一种仅 HTML/CSS 的方法来仅显示选定数量的表单字段。我已经知道如何用 Javascript 来做到这一点。 有办法做到这一点吗? 编辑: 问题标题可能具有误导性。我并不是想设计选择框的样式,这很常见,而且已经有很多答案了。我实际上是在尝试根据 <P> 中选择的值来设置 <select> 元素的样式。 我真正想做的是根据选定的数值显示多个表单字段: <select name="number-of-stuffs"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <div class="stuff-1"> <input type="text" name="stuff-1-detail"> <input type="text" name="stuff-1-detail2"> </div> <div class="stuff-2" style="display:none"> <input type="text" name="stuff-2-detail"> <input type="text" name="stuff-2-detail2"> </div> <div class="stuff-3" style="display:none"> <input type="text" name="stuff-3-detail"> <input type="text" name="stuff-4-detail2"> </div> 我想在物品数量=2时显示div.stuff-1和div.stuff-2,并在物品数量=2时显示display div.stuff-1div.stuff-2和div.stuff-3。 类似这样的东西小提琴 它称为 属性选择器 option[value="1"] { background-color:yellow; } 示例 http://jsfiddle.net/JchE5/ 你可以使用 select option[value="1"] 但浏览器支持不会太棒。 这可能需要一个尚未为 CSS2 或 CSS3 指定的 parent 选择器。 “包含 bar 的 foo”的 CSS 选择器? 有 CSS 父选择器吗? 截至 2013 年 5 月,主题选择器已在 CSS4 工作草案中定义,但尚未有浏览器供应商实现它。 所讨论的方法是否(理论上)使用主题选择器有效还有待观察。 下面的替代方案怎么样? 您没有得到 select 框,但也许这已经足够接近了。 #option-1, #option-2, #option-3 { display: none; } #nos-1:checked ~ #option-1, #nos-2:checked ~ #option-2, #nos-3:checked ~ #option-3 { display: block; } <input id="nos-1" name="number-of-stuffs" type="radio" value="1" checked="checked" /><label for="nos-1">1</label> <input id="nos-2" name="number-of-stuffs" type="radio" value="2" /><label for="nos-2">2</label> <input id="nos-3" name="number-of-stuffs" type="radio" value="3" /><label for="nos-3">3</label> <div id="option-1"> <input type="text" name="stuff-1-detail" value="1-1" /> <input type="text" name="stuff-1-detail2" value="1-2" /> </div> <div id="option-2"> <input type="text" name="stuff-2-detail" value="2-1" /> <input type="text" name="stuff-2-detail2" value="2-2" /> </div> <div id="option-3"> <input type="text" name="stuff-3-detail" value="3-1" /> <input type="text" name="stuff-4-detail2" value="3-2" /> </div> 我相信在“实时”或实时中,只有使用 javascript 或 jQuery 才有可能。使用 display: none onLoad 将潜在隐藏的字段包裹在 div 中,并让 JS 或 jQuery 将状态更改为 display: block 或您喜欢的任何方式。 //Show Hide based on selection form Returns $(document).ready(function(){ //If Mobile is selected $("#type").change(function(){ if($(this).val() == 'Movil'){ $("#imeiHide").slideDown("fast"); // Slide down fast } else{ $("#imeiHide").slideUp("fast"); //Slide Up Fast } }); //If repairing is selected $("#type").change(function(){ if($(this).val() == 'repairing'){ $("#problemHide").slideDown("fast"); // Slide down fast $("#imeiHide").slideDown("fast"); // Slide down fast }else{ $("#problemHide").slideUp("fast"); //Slide Up Fast } }); }); // type is id of <select> // Movil is option 1 // Repairing is option 2 //problemHide is div hiding field where we write problem //imeiHide is div hiding field where we write IMEI 我正在我的一个应用程序中使用... PHP 也可以,但是使用 PHP,您必须发送更改请求,或者您可以在 php 中编写代码,以根据已选择的值加载某些类,例如 <select class="<?php if($valueOne == 'Something'){echo 'class1';}else{echo 'class2';}"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> 我找到了基于这个答案的解决方案 最能满足op的要求。不完全是 CSS,但绝对涉及最少数量的 JavaScript。 select[data-chosen='1']~.stuff-1{ display: block !important; } select:not([data-chosen='1'])~.stuff-1{ display: none; } select[data-chosen='2']~.stuff-2{ display: block !important; } select[data-chosen='3']~.stuff-3{ display: block !important; } <select name="number-of-stuffs" data-chosen = "1" onchange = "this.dataset.chosen = this.value;"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <div class="stuff-1"> <span> I am stuff-1!</span> <input type="text" name="stuff-1-detail"> <input type="text" name="stuff-1-detail2"> </div> <div class="stuff-2" style="display:none"> <span> I am stuff-2!</span> <input type="text" name="stuff-2-detail"> <input type="text" name="stuff-2-detail2"> </div> <div class="stuff-3" style="display:none"> <span> I am stuff-3!</span> <input type="text" name="stuff-3-detail"> <input type="text" name="stuff-4-detail2"> </div> 你甚至不需要编写任何单独的js,尽管在"this.dataset.chosen = this.value;"中嵌入onchange似乎有点hacky。 现在终于可以实现了,因为:has()得到了广泛的支持(https://caniuse.com/css-has)。 p { display:none; } select:has([value="1"]:checked) + p { display: block; } <select> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <p>Display only if an option with value 1 is selected</p>
我正在绞尽脑汁去实现一些相对简单的事情。 我需要选择页面上的每个第三个和第四个元素,如何使用 css :nth-child() 来做到这一点? 也欢迎JS解答。
我想在我的段落开始之前添加一个引号图标,因为我在其他一些网站上看到过这样做。 所以我尝试调整一下宽度、高度和字体大小