CSS :nth 选择器标题
Posted
技术标签:
【中文标题】CSS :nth 选择器标题【英文标题】:CSS :nth Selectors Header 【发布时间】:2018-06-02 04:14:23 【问题描述】:我需要一些帮助来从标题(h1、h2、..)中选择字母/单词。
这是一个 CSS Zen Garden,这意味着我只能使用 CSS,不能编辑 html。我需要使用 css 选择器。我尝试使用不同的 ::nth 选择器,但我还没有找到解决方案。
如果我可以更改 HTML,我会在标题中跨越我需要的单词并使其获得新颜色,但在这里这是不可能的......
我需要选择 h3 的第 10 个字母并在前言部分和解释部分中将颜色更改为红色。我也需要更改它。
我尝试使用第 n 个选择器 ::nth-letter、::last-line、::nth-word。 ::first-letter 在第三个标题中有效,但其余部分无效。
/*eerste section*/
.preamble h3
font-family: fraktur;
font-size: 15em;
color: #4A4A4A;
margin: 5%;
.preamble h3::nth-letter (5)
color:#C54B36;
.preamble
/* width: 80%; */
display: grid;
grid-template-columns: 1fr;
margin: 50px auto;
/* border: 2px solid #000000; */
background-image: url('../images/foto1.png');
background-repeat: no-repeat;
/*background-size: contain;*/
background-size: 40%;
background-position: 93% 82%;
.preamble p
width: 47%;
margin: 15px 40px;
/*einde eerste section*/
/*tweede section*/
.explanation h3
font-family: baskerville;
font-weight: 100;
font-size: 10em;
max-width: 42%;
color: #4A4A4A;
margin-right: 12%;
.explanation
/* width: 80%; */
display: grid;
grid-template-columns: 1fr;
margin: 50px auto;
/* border: 2px solid #000000; */
background-image: url('../images/dame.png');
background-repeat: no-repeat;
background-size: contain;
background-position: 13% 82%;
justify-items: end;
.explanation p
width: 47%;
margin: 15px 40px;
/*vierde section*/
.requirements h3
font-family: fraktur;
font-weight: 100;
font-size: 15em;
color: #4A4A4A;
margin: 5%;
.requirements
width: 80%;
display: grid;
grid-template-columns: 1fr;
margin: 50px auto;
background-image: url('../images/fin.png');
background-repeat: no-repeat;
background-size: 30%;
background-position: center bottom;
justify-items: end;*/
.requirements p
margin: 0 auto;
column-count: 2;
column-gap: 50px;
.requirements h3::first-letter
color:#C54B36;
/*einde vierde section*/
<section class="intro" id="zen-intro">
<header role="banner">
<h1>CSS Zen Garden</h1>
<h2>The Beauty of <abbr title="Cascading Style Sheets">CSS</abbr> Design</h2>
</header>
<div class="summary" id="zen-summary" role="article">
<p>A demonstration of what can be accomplished through <abbr title="Cascading Style Sheets">CSS</abbr>-based design. Select any style sheet from the list to load it into this page.</p>
<p>Download the example <a href="/examples/index" title="This page's source HTML code, not to be modified.">html file</a> and <a href="/examples/style.css" title="This page's sample CSS, the file you may modify.">css file</a></p>
</div>
<div class="preamble" id="zen-preamble" role="article">
<h3>The Road to Enlightenment</h3>
<p>Littering a dark and dreary road lay the past relics of browser-specific tags, incompatible <abbr title="Document Object Model">DOM</abbr>s, broken <abbr title="Cascading Style Sheets">CSS</abbr> support, and abandoned browsers.</p>
<p>We must clear the mind of the past. Web enlightenment has been achieved thanks to the tireless efforts of folk like the <abbr title="World Wide Web Consortium">W3C</abbr>, <abbr title="Web Standards Project">WaSP</abbr>, and the major browser creators.</p>
<p>The CSS Zen Garden invites you to relax and meditate on the important lessons of the masters. Begin to see with clarity. Learn to use the time-honored techniques in new and invigorating fashion. Become one with the web.</p>
</div>
</section>
<div class="main supporting" id="zen-supporting" role="main">
<div class="explanation" id="zen-explanation" role="article">
<h3>So What is This About?</h3>
<p>There is a continuing need to show the power of <abbr title="Cascading Style Sheets">CSS</abbr>. The Zen Garden aims to excite, inspire, and encourage participation. To begin, view some of the existing designs in the list. Clicking on any one will load the style sheet into this very page. The <abbr title="HyperText Markup Language">HTML</abbr> remains the same, the only thing that has changed is the external <abbr title="Cascading Style Sheets">CSS</abbr> file. Yes, really.</p>
<p><abbr title="Cascading Style Sheets">CSS</abbr> allows complete and total control over the style of a hypertext document. The only way this can be illustrated in a way that gets people excited is by demonstrating what it can truly be, once the reins are placed in the hands of those able to create beauty from structure. Designers and coders alike have contributed to the beauty of the web; we can always push it further.</p>
</div>
<div class="participation" id="zen-participation" role="article">
<h3>Participation</h3>
<p>Strong visual design has always been our focus. You are modifying this page, so strong <abbr title="Cascading Style Sheets">CSS</abbr> skills are necessary too, but the example files are commented well enough that even <abbr title="Cascading Style Sheets">CSS</abbr> novices can use them as starting points. Please see the <a href="http://www.mezzoblue.com/zengarden/resources/" title="A listing of CSS-related resources"><abbr title="Cascading Style Sheets">CSS</abbr> Resource Guide</a> for advanced tutorials and tips on working with <abbr title="Cascading Style Sheets">CSS</abbr>.</p>
<p>You may modify the style sheet in any way you wish, but not the <abbr title="HyperText Markup Language">HTML</abbr>. This may seem daunting at first if you’ve never worked this way before, but follow the listed links to learn more, and use the sample files as a guide.</p>
<p>Download the sample <a href="/examples/index" title="This page's source HTML code, not to be modified.">HTML</a> and <a href="/examples/style.css" title="This page's sample CSS, the file you may modify.">CSS</a> to work on a copy locally. Once you have completed your masterpiece (and please, don’t submit half-finished work) upload your <abbr title="Cascading Style Sheets">CSS</abbr> file to a web server under your control. <a href="http://www.mezzoblue.com/zengarden/submit/" title="Use the contact form to send us your CSS file">Send us a link</a> to an archive of that file and all associated assets, and if we choose to use it we will download it and place it on our server.</p>
</div>
<div class="benefits" id="zen-benefits" role="article">
<h3>Benefits</h3>
<p>Why participate? For recognition, inspiration, and a resource we can all refer to showing people how amazing <abbr title="Cascading Style Sheets">CSS</abbr> really can be. This site serves as equal parts inspiration for those working on the web today, learning tool for those who will be tomorrow, and gallery of future techniques we can all look forward to.</p>
</div>
<div class="requirements" id="zen-requirements" role="article">
<h3>Requirements</h3>
<p>Where possible, we would like to see mostly <abbr title="Cascading Style Sheets, levels 1 and 2">CSS 1 & 2</abbr> usage. <abbr title="Cascading Style Sheets, levels 3 and 4">CSS 3 & 4</abbr> should be limited to widely-supported elements only, or strong fallbacks should be provided. The CSS Zen Garden is about functional, practical <abbr title="Cascading Style Sheets">CSS</abbr> and not the latest bleeding-edge tricks viewable by 2% of the browsing public. The only real requirement we have is that your <abbr title="Cascading Style Sheets">CSS</abbr> validates.</p>
<p>Luckily, designing this way shows how well various browsers have implemented <abbr title="Cascading Style Sheets">CSS</abbr> by now. When sticking to the guidelines you should see fairly consistent results across most modern browsers. Due to the sheer number of user agents on the web these days — especially when you factor in mobile — pixel-perfect layouts may not be possible across every platform. That’s okay, but do test in as many as you can. Your design should work in at least IE9+ and the latest Chrome, Firefox, ios and android browsers (run by over 90% of the population).</p>
<p>We ask that you submit original artwork. Please respect copyright laws. Please keep objectionable material to a minimum, and try to incorporate unique and interesting visual themes to your work. We’re well past the point of needing another garden-related design.</p>
<p>This is a learning exercise as well as a demonstration. You retain full copyright on your graphics (with limited exceptions, see <a href="http://www.mezzoblue.com/zengarden/submit/guidelines/">submission guidelines</a>), but we ask you release your <abbr title="Cascading Style Sheets">CSS</abbr> under a Creative Commons license identical to the <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/" title="View the Zen Garden's license information.">one on this site</a> so that others may learn from your work.</p>
<p role="contentinfo">By <a href="http://www.mezzoblue.com/">Dave Shea</a>. Bandwidth graciously donated by <a href="http://www.mediatemple.net/">mediatemple</a>. Now available: <a href="http://www.amazon.com/exec/obidos/ASIN/0321303474/mezzoblue-20/">Zen Garden, the book</a>.</p>
</div>
【问题讨论】:
您是否尝试实现自己的自定义选择器?它们不会因为你把它们放在你的 CSS 中而起作用。 当你被限制在没有 HTML 项目的情况下接触 CSS 时,如果未来的 CSS 能够做到这一点,那就太好了。但目前是不可能的。 你可以使用一个伪元素,在里面放一个 E,把它变成红色,hackfix 定位它并以一些真正丑陋的解决方案为代价获得你想要的东西。实际上......如果你隐藏整个标题并使用多个元素/伪元素来取回完整的标题,它甚至可能不那么难看。(在标记中可能不可能) @BoltClock 是的尝试了一些。 .preamble h3::nth-word(4) 颜色:紫色; .preamble h3:first-word 颜色:蓝色; 呃...我不确定你是否明白你在做什么。你不只是在你的 CSS 中放置一个虚构的选择器并期望它能够工作。它不会仅仅因为你想象它会起作用。 【参考方案1】:看看那个:
-
红线将图片分割成单色字体。
蓝色水平线表示文本未居中 - 第一行只是缩进。
h3
font-family: Diplomata;
font-size: 40px;
font-weight: normal;
width: 600px;
text-indent: 1.35em;
background: linear-gradient(to right, red 1.35em, black 1.35em);
-webkit-background-clip: text;
color: white; /* make text readable if clipping is not supported */
-webkit-text-fill-color: transparent;
<link href="https://fonts.googleapis.com/css?family=Diplomata" rel="stylesheet">
<h3>The Road to Enlightenment</h3>
浏览器支持:至少是 Chrome、FF、Edge 的实际版本。在 IE 中不起作用。
【讨论】:
很好地使用background-clip
和fill-color
【参考方案2】:
好的,不要这样做,但我已经做了一个简单的例子来配合我的评论。
我所做的是将实际标题拆分为 3 个伪元素,其中第二个仅包含我制作为红色的字母 E。 原始文本应该会以某种方式崩溃,我只是在这里选择了 0px 字体大小作为适用于大多数桌面浏览器的快速破解。
这当然很难看,但它确实有效,并且对于可访问性/SEO 来说并不是很糟糕,因为屏幕阅读器不会读取伪元素(或者不应该?)并且原始标题仍然存在。
.preamble::before
color: black;
content: 'The Road to ';
font-size: 20px;
h3
color: transparent;
font-size: 0;
display: inline-block;
h3::before
color: red;
content: 'E';
font-size: 20px;
h3::after
color: black;
content: 'nlightenment';
font-size: 20px;
<div class="preamble" id="zen-preamble" role="article">
<h3>The Road to Enlightenment</h3>
<p>Littering a dark and dreary road lay the past relics of browser-specific tags, incompatible <abbr title="Document Object Model">DOM</abbr>s, broken <abbr title="Cascading Style Sheets">CSS</abbr> support, and abandoned browsers.</p>
<p>We must clear the mind of the past. Web enlightenment has been achieved thanks to the tireless efforts of folk like the <abbr title="World Wide Web Consortium">W3C</abbr>, <abbr title="Web Standards Project">WaSP</abbr>, and the major browser creators.</p>
<p>The CSS Zen Garden invites you to relax and meditate on the important lessons of the masters. Begin to see with clarity. Learn to use the time-honored techniques in new and invigorating fashion. Become one with the web.</p>
</div>
【讨论】:
【参考方案3】::nth-letter - why is it not working?
看起来没有这样的东西:
:nth-letter(10);
编辑:
这是某人编写的第 n 个“所有”javascript 示例:https://codepen.io/FWeinb/pen/djuIx
希望你的项目中可以添加javascript!
【讨论】:
.preamble h3:nth-word(4) color:green; 不起作用! @Distortion 它使用 javascript!看看 JavaScript 专栏中的 codepen。如果可以的话,你可以复制粘贴到你的项目中,否则你将无法实现你想要的。 很遗憾,我不能在项目中使用 javascript,但感谢您的提示。任务是不要碰html(甚至不添加脚本行)以上是关于CSS :nth 选择器标题的主要内容,如果未能解决你的问题,请参考以下文章
CSS 选择器不遵循 bs4 的 ':nth-child' 逻辑
如何使用 CSS“nth-child”选择器选择自定义行数? [关闭]
如何使用 Selenium 的标准 CSS 选择器(nth-of-type 或 nth-child)选择嵌套元素?