css-selectors 相关问题

选择器是与文档树中的元素匹配的模式。在CSS规则中,它们用于为与模式匹配的元素定义样式。

我想使用 Playwright 从漫画中抓取章节列表

目前我正在刮漫画。我遇到的问题是,虽然我成功获得了一章,但我仍然不知道如何获得所有章节的数组。 我获得这一章的方式是通过

回答 1 投票 0

将 CSS 应用于特定类的最后一个元素

我想在上一篇博文中应用一些CSS。问题在于 div“blog-posts”中的最后一个元素与“blog-post”div 的元素类型相同。 我试过了: 最后类型 最后一气...

回答 3 投票 0

Python Selenium 使用 CLASS_NAME 选择器时无法定位元素 [NoSuchElementException]

当我尝试使用find_element(By.CLASS_NAME, 'classname')时,它总是返回NoSuchElementException,无法定位元素。 但是当我在同一个元素上使用 ID 和 NAME 时,它起作用了!只有

回答 1 投票 0

如何使用 JMeter CSS 选择器提取脚本标签的内部文本?

我只是将一个类“.script_class”添加到我的脚本标签中即可找到它。 然后我的 JMeter 设置是: 创建的变量名称:内容 CSS 选择器表达式:.script_class 默认值:

回答 1 投票 0

通过 CSS 选择器选择两个已知元素之间的所有元素

我有两个已定义 id 的元素,它们之间有任何 html,例如: 你好 示例 我有两个已定义 id 的元素,它们之间有任何 html,例如: <div id='d1'>Hello</div> <!-- Here come any html code --> <div>Example</div><hr/><a href="">Example</a> <div id='d2'>World</div> 是否有CSS选择器可以选择#d1和#d2之间的所有元素? 答案:不会。 但是您始终可以选择 JQuery: $('#id').nextUntil('#id2') 请记住,.nextUntil方法选择之间的所有元素,不包括。要选择包含这两个元素的元素,请使用以下命令: $('#id').nextUntil('#id2').andSelf().add('#id2') <!DOCTYPE html> <html> <head> <style> .siblings * { display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script> $(document).ready(function(){ $("li.start").nextUntil("li.stop").css({"color": "red", "border": "2px solid red"}); $("li.start1").nextUntil("li.stop1").andSelf().add("li.stop1").css({"color": "red", "border": "2px solid red"}); }); </script> </head> <body> <p>Just selecting all elements in between, exclusive.</p> <div style="width:500px;" class="siblings"> <ul>ul (parent) <li>li (sibling)</li> <li>li (sibling)</li> <li class="start">li (sibling with class name "start")</li> <li>li (the next sibling of li with class name "start")</li> <li>li (the next sibling of li with class name "start")</li> <li>li (the next sibling of li with class name "start")</li> <li class="stop">li (sibling with class name "stop")</li> </ul> </div> <p>Just selecting all elements in between, inclusive.</p> <div style="width:500px;" class="siblings"> <ul>ul (parent) <li>li (sibling)</li> <li>li (sibling)</li> <li class="start1">li (sibling with class name "start")</li> <li>li (the next sibling of li with class name "start")</li> <li>li (the next sibling of li with class name "start")</li> <li>li (the next sibling of li with class name "start")</li> <li class="stop2">li (sibling with class name "stop")</li> </ul> </div> </body> </html> 在我看来,这是最简单的选择。 我是与 CSS 相关的问题的新手,但我试图找到同一问题的答案,看起来有一种方法可以在不使用 jQuery 的情况下实现它: #d1~:not(#d2, #d2~*) 我附上一个简单的 html 页面来测试这个解决方案。警告!该代码片段使用 alert 显示选择结果。 let selectionQuery = document.querySelectorAll("#d1~:not(#d2, #d2~*)"); let selectedElementsCount = selectionQuery.length; for (let selectedElementIndex = 0; selectedElementIndex < selectedElementsCount; selectedElementIndex++) { let tempElement = selectionQuery[selectedElementIndex] alert("tempElement.outerHTML: " + tempElement.outerHTML); } <!DOCTYPE html> <html> <meta charset="UTF-8"> <head> <title>Select everything between #d1 and #d2</title> </head> <body> <span>Something which shouldn't be chosen, because it's before the 1st element</span> <div id='d1'>Hello</div> <!-- Here come any html code --> <div>Example</div><hr/><a href="">Example</a> <img src="http://some.image.com"/> <div id='d2'>World</div> <span>Other text which sholdn't be chosen, because it's after the last element</span> </body> </html> 如果解决方案确实符合您最初的要求,那么我认为为您的问题选择新的正确答案是正确的(因为我和数千名其他开发人员正在寻找相同的问题,而他们只看到了第一个)回答说不可能)。

回答 2 投票 0

CSS:如何选择父母的兄弟姐妹[重复]

我的页面中有以下 HTML。 显示详情 我的页面中有以下 HTML。 <ul id="detailsList"> <li> <input type="checkbox" id="showCheckbox" /> <label for="showCheckbox">Show Details</label> </li> <li>content ...</li> <li>content ...</li> <li>content ...</li> <li>content ...</li> <li>content ...</li> </ul> 我无法更改此 HTML。我使用以下 CSS 隐藏了除第一个之外的所有 LI。 ul#detailsList li:nth-child(1n+2) { display:none; } 到目前为止一切顺利。我现在想做的是当勾选复选框时使用纯 CSS 显示那些隐藏的 LI。迄今为止我最好的尝试是 ul#detailsList li input#showCheckbox:checked + li { display:block; } 显然这不起作用,因为 + li 只会选择紧接在复选框之后的 LI(即兄弟姐妹),而不是父级的兄弟姐妹。 这可能吗? 您可以使用:has(): ul#detailsList:has(> li > input#showCheckbox:checked) > li { display: block; } 但请注意,浏览器对 :has() 的支持还不是很好。 CSS 无法做到这一点,但是 您可以尝试使用 jQuery $("#showCheckbox").click(function(){ $(this).parent().siblings().show(); }); 你不能单独使用CSS来做到这一点,你需要使用javascript来做到这一点。因为您需要捕获复选框的更改事件。

回答 2 投票 0

背景根据两个 2 个元素的间隔,可以相对于彼此处于任何位置

元素只是很多兄弟姐妹,两个间隔由类a1/a2/b1/b2决定: [a1, a2) 中的元素应具有一种颜色的背景,例如绿色, 元素...

回答 1 投票 0

无法访问位于多个影子根目录内的 Reddit 登录按钮

在 Reddit.com 上,当我单击登录按钮时,会出现一个对话框来填写登录详细信息,但对话框上的登录按钮无法通过任何定位器访问。当我复制各种定位器时...

回答 1 投票 0

元素有两个类时的样式

我一直在查看 css 选择器的 w3 页面,但没有找到任何有希望的线索,所以我想我会问...... 有没有一种方法可以用两个类来设置单个元素的样式,而不是 if...

回答 3 投票 0

HTML CSS 有条件地应用 CSS

嗨,我被困在一个地方,尝试了各种方法,但没有成功。 我有两个 HTML div 嗨,我被困在一个地方,尝试了各种方法,但没有成功.. 我有两个 HTML div <div class="lmn-tab-item"></div> <div class="lmn-tab-item lmn-tab-item-active active"></div> 如果 div 也有类 lmn-tab-item-active,有没有办法将 css 应用于 lmn-tab-item。 所以基本上我想将第一个 div 的默认值应用为 color:red 并将第二个 div 的默认值应用为 lmn-tab-item-active apply color:green 我尝试了以下方法 div[class^="lmn-tab-item-active"][class*=" "]:before { color: green!important; } .lmn-tab-item { color: red!important; } 无法正常工作,请帮忙 你的问题不是100%清楚,但你可以使用这种选择器: .lmn-tab-item.lmn-tab-item-active { [your css settings] } 它仅适用于元素具有 both 这些类的情况。 (注意:它们之间没有空格!) 您也可以对三个或更多课程执行相同的操作。

回答 1 投票 0

如何将伪元素应用于具有特定类的元素的子元素?

假设我有: 段落。 裸笔记部 注释 DIV 中的段落。 假设我有: <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>NON Note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div> 然后我想得到输出: Paragraph. NOTE: Naked Note Div. NOTE: Paragraph in Note DIV. Second Paragraph in Note DIV. NON Note Naked Div. Paragraph in NON None DIV. 我曾尝试使用伪类 ::before 来实现此目的,但事实上,有些 div 内部有段落,有些则没有,这使得它非常困难,至少对于新手我来说是这样。 使用:CSS .note::before {content: "NOTE: ";}我得到: .note::before { content: "NOTE: "; } <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>NON Note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div> 使用 CSS .note :first-child::before {content: "NOTE: ";} 我得到: Paragraph. Naked Note Div. NOTE: Paragraph in Note DIV. Second Paragraph in Note DIV. 有什么方法可以只用 CSS 来解决这个问题吗?那不是使用预处理器或 jquery 之类的。 为什么你不定位注释 div 内的段落?在我看来这就是你所要求的。 .note p::before { content: "NOTE: "; } <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>Non-note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div> 您可以尝试使用 :has() 选择器 .note:not(:has(*)):before, /* when it has nothing select the note element*/ .note:has(*) :first-child:before { /* when it has something select the first child*/ content:"Note: "; color: red; } <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>NON Note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div> 在更好地支持:has()之前,您可以使用浮动: .note::before { content:"Note:"; color: red; float: left; margin-right: 10px; } <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>NON Note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div>

回答 2 投票 0

::before 遇到问题,如何根据 <div> 的内容进行不同的应用?

假设我有: 段落。 裸笔记部 注释 DIV 中的段落。 假设我有: <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>NON Note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div> 然后我想得到输出: Paragraph. NOTE: Naked Note Div. NOTE: Paragraph in Note DIV. Second Paragraph in Note DIV. NON Note Naked Div. Paragraph in NON None DIV. 我曾尝试使用伪类 ::before 来实现此目的,但事实上,有些 div 内部有段落,有些则没有,这使得它非常困难,至少对于新手我来说是这样。 使用:CSS .note::before {content: "NOTE: ";}我得到: .note::before { content: "NOTE: "; } <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>NON Note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div> 使用 CSS .note :first-child::before {content: "NOTE: ";} 我得到: Paragraph. Naked Note Div. NOTE: Paragraph in Note DIV. Second Paragraph in Note DIV. 有什么方法可以只用 CSS 来解决这个问题吗?那不是使用预处理器或 jquery 之类的。 您可以尝试使用 :has() 选择器 .note:not(:has(*)):before, /* when it has nothing select the note element*/ .note:has(*) :first-child:before { /* when it has something select the first child*/ content:"Note: "; color: red; } <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>NON Note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div> 在更好的支持之前你可以使用浮动: .note::before { content:"Note: "; color: red; float: left; margin-right: 10px; } <p>Paragraph.</p> <div class="note">Naked Note Div.</div> <div class="note"> <p>Paragraph in Note DIV.</p> <p>Second Paragraph in Note DIV.</p> </div> <div>NON Note Naked Div.</div> <div> <p>Paragraph in NON None DIV.</p> </div>

回答 1 投票 0

使用 CSS 选择器选择一组元素和文本

我有一个 HTML 页面,例如:- 名字 文本 名字 文本 ... 我有一个 HTML 页面,例如:- <div> <a href='link'> <u class>name</u> </a> text <br> <a href='link'> <u class>name</u> </a> text <br> <a href='link'> <u class>name</u> </a> text <br> <a href='link'> <u class>name</u> </a> text <br> <a href='link'> <u class>name</u> </a> text <br> </div> 我需要选择一个这样的组:- <a href='link'> <u class>name</u> </a> text <br> 我需要从一组中选择 3 个值:链接、名称和文本。 有什么方法可以选择这样的组,并使用 CSS 选择器、Xpath 或其他方式从 scrapy 中的每个组中提取这些特定值? Scrapy 提供了一种机制,可以使用 yield 作为项目,定义键值对的 Python 对象,在 html 页面上 Items 多个值。 您可以单独提取,但也可以将它们作为键值对一起生成。 要提取元素属性的值,请使用 attr()。 要提取innerhtml,请使用文本。 就像你可以在 scrapy 中定义解析函数一样: def parse(self, response): for_link = response.css(' .row.no-gutters div:nth-child(3) div:nth-child(8) a::attr(href)').getall() for_name = response.css(' .row.no-gutters div:nth-child(3) div:nth-child(8) a u::text').getall() for_text = response.css(' .row.no-gutters div:nth-child(3) div:nth-child(8)::text').getall() # Yield all elements yield {"link": for_link, "name": for_name, "text": for_text} 打开 items.py 文件。 # Define here the models for your scraped # items # Import the required library import scrapy # Define the fields for Scrapy item here # in class class <yourspider>Item(scrapy.Item): # Item key for a for_link = scrapy.Field() # Item key for u for_name = scrapy.Field() # Item key for span for_text = scrapy.Field() 了解更多详情,阅读本教程 如果可以像这样将文本换行: <a href='link'> <u class>name</u> </a> <span>text</span> <br> 然后你可以像这样选择 CSS 中的所有内容: a, a + span {} 或者您可以分别设置这两个样式: a {} a + span {} + 的意思是“紧随其后”或“紧随其后”。

回答 2 投票 0

下拉菜单相互依赖

您好,我在此代码笔中的代码有问题: https://codepen.io/KWunsch/pen/mdaZBwd 以下 html 片段 您好,我在此代码笔中的代码有问题: https://codepen.io/KWunsch/pen/mdaZBwd 以下 html 片段 <nav> <ul> <li><button class="nav-btn" data-lvl="1" title="Navigation Level 1">Modul 1: Lorem Ipsum</button> <ul id="1" style=""> <li><button class="nav-btn" data-lvl="1-1" title="Navigation Level 2">Lorem Ipsum (1-1)</button> <ul id="1-1"> <li><a href="1-1-1">Lorem Ipsum</a></li> <li><a href="1-1-2">Lorem Ipsum</a></li> <li><a href="1-1-3">Lorem Ipsum</a></li> </ul> </li> <li><button class="nav-btn" data-lvl="1-2" title="Navigation Level 2">Lorem Ipsum (1-2)</button> <ul id="1-2"> <li><a href="1-2-1">Lorem Ipsum</a></li> <li><a href="1-2-2">Lorem Ipsum</a></li> </ul> </li> <li><button class="nav-btn" data-lvl="1-3" title="Navigation Level 2">Lorem Ipsum (1-3)</button> <ul id="1-3"> <li><a href="1-3-1">Lorem Ipsum</a></li> <li><button class="nav-btn" data-lvl="1-3-1-1" title="Navigation Level 3">Lorem Ipsum (1-3-1-1)</button> <ul id="1-3-1-1"> <li><a href="1-3-1-1-1">Lorem Ipsum</a></li> </ul> </li> <li><button class="nav-btn" data-lvl="1-3-1-2" title="Navigation Level 3">Lorem Ipsum (1-3-1-2)</button> <ul id="1-3-1-2"> <li><a href="1-3-1-2-1">Lorem Ipsum</a></li> </ul> </li> </ul> </li> <!-- ... Repeat similar structure for other list items ... --> </ul> </li> <li><button class="nav-btn" data-lvl="1" title="Navigation Level 1">Modul 2: Lorem Ipsum</button> <ul id="1-3-1-3"> <li>Lorem</li> <li>Ipsum</li> </ul> </li> <!-- ... Repeat similar structure for other list items ... --> </ul> </nav> 我很感兴趣。我无法很好地控制代码片段,但这个示例具有 data-lvl,而原始示例具有自动生成的 data-lvl,格式为“某物-某物-某物”(字母和数字的组合)。我不确定是否应该使用它。 我想要 n 个下拉菜单(实际上,我期望 5 或 6 个,其他都不可行,但我希望保持灵活性:-) ) 第一个下拉列表应选择全部 nav > ul > li > button.nav-btn而第二个下拉列表应基于选择 nav > ul > li > button.nav-btn + ul > li > button.nav-btn 或者如果最后一个孩子是“a”,则应转发到此。 第三个应该选择第二个下拉列表及其下面的按钮,具有相同的结构 - 如果是按钮 - 转到下拉列表 4,如果选择“a”则转发到链接。 我以某种方式管理了前两个级别,尽管我正在努力使用 if 语句来分离第二个下拉列表(这将与第三个和第四个以及第 n 个下拉列表相关) 我也在某种程度上与这个函数的递归性作斗争,我可以看到我一遍又一遍地做同样的事情,但我还没有弄清楚如何利用它。 任何帮助将不胜感激! 我花了相当长的时间来解决这个问题,但还没有找到解决方案。我知道 htmx 或其他框架可以更轻松地创建依赖下拉菜单,但除了 jquery 和 javascript 之外,我不允许使用其他任何东西,这就是堆栈。 第一步是心态转变 - 停止使用动态生成 ID - 它们只会让人困惑并导致过于复杂的代码,试图“解析”ID 以获取你所在的级别,以便你可以进入下一个级别等。完全没有必要。 第二步是,如果您有 n 下拉菜单,则需要适用于 current 下拉菜单和 next 下拉菜单的代码,而不是 x 和 x+1。 因此,第一个更改是将现有的 ddl1 和 ddl2 填充代码重构为单个可重用函数,该函数具有要填充的 select 参数以及用于填充它的选项源。 为了链接回原始源选项,我们可以使用 data-id 属性(预先设置或动态设置),但使用 data 将元素存储在选项本身中会更简单能够握住物体: opt.data("button", this); 可重复使用的功能: function populateDropdown(ddl, optionButtons) { ddl.empty() optionButtons.each(function() { let opt = $('<option>', { value: $(this).text().trim(), text: $(this).text().trim(), }); opt.data("button", this); ddl.append(opt); }); ddl.off("change").on("change", function() { let nextDdls = $(this).nextAll("select"); nextDdls.empty(); let nextDdl = nextDdls.first(); let thisButton = $(this).find("option:selected").data("button"); let childOptionButtons = $(thisButton).next("ul").find(">li>button"); populateDropdown(nextDdl, childOptionButtons); }); } 这与原始 dropdown1 填充代码相同,但将 dropdown1 作为参数,并将数据设置为源按钮。 change 处理程序然后使用相对 DOM 导航来获取 next 下拉列表 - 使用一些额外的代码来首先清除 all 后续下拉列表 - 以及该选项的源按钮,然后是基于下一组选项在那个源按钮上。 这部分代码在很大程度上取决于您的 ul>li>button+ul>li>button+ul... 和 #test>select+select+select... 的 HTML 布局,因此如果发生更改,您需要更改它获取下一个 select 的方式、如何获取确定标题的“按钮”以及如何获取它获取下一个下拉列表的项目。 剩下的就是初始化第一个下拉菜单 populateDropdown($('#test>select:first'), $('nav > ul > li > button.nav-btn')); 此外,您还可以根据菜单的深度生成 n select,为您提供完整的数据驱动代码(js 中没有硬编码值) function createDropdowns() { let depth = $("li").map((i, e) => { return { li: e, parents: $(e).parents("ul").length }}).get().reduce((prev, current) => (prev && prev.parents > current.parents) ? prev : current); for (let i = 1; i < depth.parents; i++) { $('#test').append(`<select></select>`) } } 更新片段: function createDropdowns() { let depth = $("li").map((i, e) => { return { li: e, parents: $(e).parents("ul").length }}).get().reduce((prev, current) => (prev && prev.parents > current.parents) ? prev : current); for (let i = 1; i < depth.parents; i++) { $('#test').append(`<select></select>`) } } function populateDropdown(ddl, optionButtons) { ddl.empty() optionButtons.each(function() { let opt = $('<option>', { value: $(this).text().trim(), text: $(this).text().trim(), }); opt.data("button", this); ddl.append(opt); }); ddl.off("change").on("change", function() { let nextDdls = $(this).nextAll("select"); nextDdls.empty(); let nextDdl = nextDdls.first(); let thisButton = $(this).find("option:selected").data("button"); let childOptionButtons = $(thisButton).next("ul").find(">li>button"); populateDropdown(nextDdl, childOptionButtons); }); } function populateDropdowns() { populateDropdown($('#test>select:first'), $('nav > ul > li > button.nav-btn')); } $(document).ready(function() { createDropdowns(); populateDropdowns(); // update based on the first one as there's no blank values $('#test>select:first').change(); }); <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <nav> <ul> <!-- first dropdown should select the nav > ul > li > button.nav-btn --> <li> <button class="nav-btn" title="Navigation Level 1">Modul 1: Lorem Ipsum</button> <ul> <li> <button class="nav-btn" title="Navigation Level 2">Lorem Ipsum (1-1)</button> <!--based on selection (either Modul 1 or Modul 2) , the dropdown 2 should populate this level (nav > ul > li > button.nav-btn + ul > li button.nav-btn) --> <ul> <li><a href="1-1-1">Lorem Ipsum</a></li> <li><a href="1-1-2">Lorem Ipsum</a></li> <li><a href="1-1-3">Lorem Ipsum</a></li> </ul> </li> <li> <button class="nav-btn">Lorem Ipsum (1-2)</button> <ul> <li><a href="1-2-1">Lorem Ipsum</a></li> <li><a href="1-2-2">Lorem Ipsum</a></li> </ul> </li> <li> <button class="nav-btn">Lorem Ipsum (1-3)</button> <ul> <li><a href="1-3-1">Lorem Ipsum</a></li> <li> <button class="nav-btn">Lorem Ipsum (1-3-1-1)</button> <ul> <li><a href="1-3-1-1-1">Lorem Ipsum</a></li> </ul> </li> <li> <button class="nav-btn">Lorem Ipsum (1-3-1-2)</button> <ul> <li><a href="1-3-1-2-1">Lorem Ipsum</a></li> </ul> </li> </ul> </li> <!-- ... Repeat similar structure for other list items ... --> </ul> </li> <li> <button class="nav-btn">Modul 2: Lorem Ipsum</button> <ul> <li> <button class="nav-btn" title="Navigation Level 2">Lorem Ipsum (2-1)</button> <ul> <li><a href="2-1-1">Lorem Ipsum</a></li> <li><a href="2-1-2">Lorem Ipsum</a></li> <li><a href="2-1-3">Lorem Ipsum</a></li> </ul> </li> <li>Ipsum</li> </ul> </li> <!-- ... Repeat similar structure for other list items ... --> </ul> </nav> <div id="test"></div>

回答 1 投票 0

将鼠标悬停在另一个元素上时,元素未出现

当我将鼠标悬停在 p1 元素上时,h1 元素应该会出现,但它没有出现。我对此有点困惑,因为当我查找它时,这就是它所说的,但它似乎不起作用......

回答 1 投票 0

是否可以选择属性值大于某个数字的所有元素?

我想知道CSS是否可以实现以下功能: HTML 代码: 世界你好 你好鸟 我想知道 CSS 是否可以实现以下功能: HTML 代码: <span class="funny-elem" data-mystate="127">Hello World</span> <span class="funny-elem" data-mystate="69">Hello Bird</span> <span class="funny-elem" data-mystate="1337">Hello Nerd</span> <span class="funny-elem" data-mystate="14">Hello What</span> <span class="funny-elem" data-mystate="0">Hello Else</span> ... CSS 代码: .funny-elem[data-mystate=">50"] { color:#0f0; } .funny-elem[data-mystate="<50"] { color:#f00; } 上面的CSS代码当然不会工作,因为“大于”和“小于”符号在这里被解释为属性值。 但是你知道如何选择所有数值属性值大于或小于某个数字的元素吗? 不,纯 CSS 是没有办法的。 可能的属性选择器是: [注意] [att=val] [att~=val] [att|=val] 并且 W3 关于属性选择器的文档 添加了: 属性值必须是 CSS 标识符或字符串。 [CSS21] 选择器中属性名称和值的区分大小写取决于文档语言。 所以,它们不是数字。无法使用任何数字比较。 基本 CSS3 不支持逻辑——它是严格的样式。 您可以通过使用 Javascript 执行逻辑并在您的 span 中添加一个类(如果该语句为真)来实现您想要的目标,或者使用 CSS 预处理器,例如 LESS 或 SASS。 以下是如何使用类和纯 Javascript 来完成此操作: <script type="text/javascript"> var x = document.getElementsByClassName("funny-elem") var i; for (i = 0; i < x.length; i++) { var comparator = x[i].getAttribute("data-mystate"); if (comparator > 50){ x[i].setAttribute("class","funny-elem over50"); } if (comparator < 50){ x[i].setAttribute("class","funny-elem under50"); } } </script> <style> .funny-elem.over50{ color:#0f0;} .funny-elem.under50{ color:#f00;} </style> 查看jsFiddle示例 根据阈值有多大,以及您希望 CSS 的干净程度,您可以使用 :not() 和 :is() 来实现此效果 - 如下所示: span[data-mystate]:not(:is( [data-mystate="1"], [data-mystate="2"], [data-mystate="3"] /*, ... */)) { color:#0f0; } 实际上,我刚刚在我的 Downstyler 项目中使用了这个技巧,为 <select> 属性大于 1 的 size 元素使用自定义样式。

回答 3 投票 0

如何为涉及::before标签的元素编写xpath

我正在尝试单击后面跟着 ::before 标记的选择元素。任何人都可以帮我为下面的 HTML 编写 XPath 或 CSSselector 路径吗 下面是我写的 XPath...

回答 1 投票 0

带有子选择器的 css 取代后来的 css 文件

我有一个网站,其中某些装饰元素由常规网站 css 提供,并且在某些情况下由链接在该常规文件之后的自定义 css 文件提供: 我有一个网站,其中某些装饰元素由常规网站 css 提供,并且在某些情况下由链接到该常规文件之后的自定义 css 文件提供: <link rel="preload" href="../../responsive.css" as="style" onload="this.rel='stylesheet'"> <!--surface--> <link rel="preload" href="custom.css" as="style" onload="this.rel='stylesheet'"> 我正在考虑添加一个按钮,该按钮将通过调用 Javascript 函数消除responsive.css 和 custom.css 提供的一些装饰元素。我计划实现这一点的方法是加载样式表,但将其禁用,以便它成为堆栈中的最新样式表。该样式表的格式如下: <link rel="preload" href="../../decoration_suppress.css" as="style" onload="this.rel='stylesheet'" disabled="disabled"> 作为测试,我将该行插入到开发文件中,然后在 Firefox 的检查器中删除 disabled="disabled"。它按照我的预期工作,除了我在一个特定版本的 custom.css 上使用的这一点 CSS: div[zonenum="EETS.QD.I"] > div.line > span.underline { text-decoration: underline overline red; } 这段代码忽略了我已将 span.underline 中的 text-decoration 更改为 none 的事实。我假设这是因为它非常具体并且指的是页面上孩子的孩子,但我不确定。是这样吗?如果是的话,有没有办法让浏览器尊重decoration_suppress.css中的span.underline而不是custom.css?我无法像decoration_suppress.css 那样切换一个,因为存在某些自定义字体大小和布局问题,我需要使用任何一种方式。 是的,我知道可能有更优雅的方法可以通过在单个 css 文件中标准化样式来实现此目的,但我的用例是尝试模仿中世纪的手稿页面,并且它们并不总是遵循相同的风格模式。 你是对的。对于 .underline 类,如果你想覆盖特定的选择器,你可以添加 !important 这在 CSS 中称为 specifity。 某些选择器比其他选择器具有更多的“权重”,组合选择器也是如此 - 组合选择器包含的部分越多,它就变得越具体,仍然取决于所使用的选择器(标签、类、ID、伪类等) .). 您可以在此处阅读有关它的完整文章,包括具有更高特异性的内容:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity

回答 2 投票 0

雅虎财经beautifulsoup神器解析

以下正确且有用的答案是针对问题“如何在 HTML 中过滤此工件?”提供的。 从 bs4 导入 BeautifulSoup 导入请求 page = requests.get("https://fina...

回答 1 投票 0

CSS nth-child 表示大于和小于

在我的 HTML 中, ........

回答 6 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.