gpt4 book ai didi

css - CSS :first-of-type :first-letter 问题

转载 作者:技术小花猫 更新时间:2023-10-29 12:03:12 25 4
gpt4 key购买 nike

我已将我的页面设置为在第一段内容上创建一个大首字母下沉字母。这按预期工作,但是当我在受影响的元素之前有另一个具有指定类的 div 时,它会使首字下沉消失。

查看示例...
正确显示:http://jsfiddle.net/KPqgQ/
显示不正确:http://jsfiddle.net/d73u9/

我的页面中有以下代码:

<section id="review">
<div class="content_right"></div>
<div class="content_left">
<p>text</p>
<p>text</p>
</div>
<div class="content_left">
<p>text</p>
<p>text</p>
</div>
</section>

使用以下 CSS:

   #review .content_left:first-of-type p:first-of-type{
padding-top:10px;
}

#review .content_left:first-of-type p:first-of-type:first-letter{
float: left;
line-height:90%;
padding-right: 15px;
padding-bottom: 10px;

font-family: "Georgia",_serif;
font-weight: bold;
font-size: 60px;
color:black;
}

创建一个大首字母下沉。

当我删除“content_right”div 时,这段代码可以工作,但是有了它,CSS 就无法工作了。我以为我有关于声明的正确顺序,但我一定遗漏了一些东西。

有谁知道为什么这没有按预期工作?

最佳答案

这是按预期工作的,因为 :first-of-type 选择器实际上选择了第一个特定类型的元素(section、div、span 等),而实际上并没有选择第一类。

备选方案

“~”修复

提到波浪号“~”的解决方法 here .

/* Targets all paragraphs */
p
{
display: block;
clear: both;
}

/* Targets all paragraphs within divs in #review */
#review div p
{
padding-top:10px;
}

/* Targets the first letter within each paragraph */
#review div p:first-letter{
float: left;
line-height:90%;
padding-right: 15px;
padding-bottom: 10px;
font-family: "Georgia",_serif;
font-weight: bold;
font-size: 60px;
color:black;
}

/* Removes the padding from all except the first paragraphs */
#review > div ~ div > p ~ p,
#review > .content_left ~ .content_left p:first-of-type
{
padding-top: 0px;
}

/* Removes the first letter stylings of the non-first paragraphs within
.content_left classes */
#review > .content_left ~ .content_left p:first-of-type:first-letter,
#review > div ~ div > p ~ p:first-letter
{
float: none;
line-height:90%;
padding-right: 0px;
padding-bottom: 0px;
font-family: "Georgia",_serif;
font-weight: normal;
font-size: 12px;
}

Example using '~' Method

(感谢 BoltClock,他帮助我解决了这个问题,毕竟这是他的方法。)


切换 div 顺序

.content_right div 移到 .content_left 部分后面,因为它们是 float 的,您仍然可以保持相同的布局。

代码:

<section id="review">
<div class="content_left">
<p>text</p>
<p>text</p>
</div>
<div class="content_left">
<p>text</p>
<p>text</p>
</div>
<div class="content_right"></div>
</section>​

Example of switching order :


使用 :nth-of-type 选择器

使用 :nth-of-type 选择器来选择合适的 div。

代码:

#review .content_left:nth-of-type(2) :first-child
{
padding-top:10px;
}

#review .content_left:nth-of-type(2) :first-child:first-letter
{
float: left;
line-height:90%;
padding-right: 15px;
padding-bottom: 10px;
font-family: "Georgia",_serif;
font-weight: bold;
font-size: 60px;
color:black;
}

Example using :nth-of-type

关于css - CSS :first-of-type :first-letter 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14075274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com