我已经为某个应用创建了设置列表。所有设置的容器都是一个flex元素,并且flex的方向设置为column。现在,我使用.option类创建了一个div,并放置了一个h2和一个<select>
。我将.option容器设置为显示为flex并将方向设置为行,但是它不起作用!他们堆积!
我尝试制作h2和<select>
内联块,我尝试将每一个的宽度设置为50%,什么也没有。我将附有标签的屏幕截图,以及相关代码的html和css片段。
#SettingsOverlay {
display: block;
position: fixed;
z-index: 3;
width: 100%;
height: 100%;
background-color: rgba(48, 48, 48, 0.7);
background-size: cover;
}
#SettingsOverlay div {
width: 80%;
height: 80%;
background-color: purple;
margin: auto;
padding: 10px;
display: flex;
flex-direction: column;
}
#Options {
display: flex;
flex-direction: column;
}
.option {
display: flex;
flex-direction: row;
}
.option h2 {
display: inline-block;
width: 50%;
}
.option select {
display: inline-block;
width: 50%;
}
<div id='SettingsOverlay'>
<div>
<h1>Settings</h1>
<div id='Options'>
<div class='option'>
<h2>Timezone</h2>
<select>
<option value="GMT-12">GMT-12</option>
<option value="GMT-11">GMT-11</option>
<option value="GMT-10">GMT-10</option>
<option value="GMT-9">GMT-9</option>
<option value="GMT-8">GMT-8</option>
<option value="GMT-7">GMT-7</option>
<option value="GMT-6">GMT-6</option>
<option value="GMT-5">GMT-5</option>
<option value="GMT-4">GMT-4</option>
<option value="GMT-3">GMT-3</option>
<option value="GMT-2">GMT-2</option>
<option value="GMT-1">GMT-1</option>
<option value="GMT">GMT</option>
<option value="GMT+1">GMT+1</option>
<option value="GMT+2">GMT+2</option>
<option value="GMT+3">GMT+3</option>
<option value="GMT+4">GMT+4</option>
<option value="GMT+5">GMT+5</option>
<option value="GMT+6">GMT+6</option>
<option value="GMT+7">GMT+7</option>
<option value="GMT+8">GMT+8</option>
<option value="GMT+9">GMT+9</option>
<option value="GMT+10">GMT+10</option>
<option value="GMT+11">GMT+11</option>
<option value="GMT+12">GMT+12</option>
</select>
</div>
</div>
</div>
</div>
答案 0 :(得分:2)
您的规则.option
被#SettingsOverlay div
覆盖,将其转换为#SettingsOverlay > div
或使用父ID .option
https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
Specificity是浏览器确定哪些CSS属性值与某个元素最相关的方法,因此将被应用。特异性基于由不同种类的CSS选择器组成的匹配规则。
特异性如何计算?
Specificity是应用于给定CSS声明的权重,它由匹配选择器中每种选择器类型的数量决定。当多个声明具有相同的特异性时,将在CSS中找到的最后一个声明应用于该元素。特异性仅在多个声明针对同一元素时适用。根据CSS规则,直接定位的元素将始终优先于元素从其祖先继承的规则。
#SettingsOverlay {
/* display: none;*/
position: fixed;
z-index: 3;
width: 100%;
height: 100%;
background-color: rgba(48, 48, 48, 0.7);
background-size: cover;
}
#SettingsOverlay div {
width: 80%;
height: 80%;
background-color: purple;
margin: auto;
padding: 10px;
display: flex;
flex-direction: column;
}
#Options {
display: flex;
flex-direction: column;
}
#SettingsOverlay .option {
display: flex;
flex-direction: row;
}
.option h2 {
display: inline-block;
width: 50%;
}
.option select {
display: inline-block;
width: 50%;
}
<div id='SettingsOverlay'>
<div>
<h1>Settings</h1>
<div id='Options'>
<div class='option'>
<h2>Timezone</h2>
<select>
<option value="GMT-12">GMT-12</option>
<option value="GMT-11">GMT-11</option>
<option value="GMT-10">GMT-10</option>
<option value="GMT-9">GMT-9</option>
<option value="GMT-8">GMT-8</option>
<option value="GMT-7">GMT-7</option>
<option value="GMT-6">GMT-6</option>
<option value="GMT-5">GMT-5</option>
<option value="GMT-4">GMT-4</option>
<option value="GMT-3">GMT-3</option>
<option value="GMT-2">GMT-2</option>
<option value="GMT-1">GMT-1</option>
<option value="GMT">GMT</option>
<option value="GMT+1">GMT+1</option>
<option value="GMT+2">GMT+2</option>
<option value="GMT+3">GMT+3</option>
<option value="GMT+4">GMT+4</option>
<option value="GMT+5">GMT+5</option>
<option value="GMT+6">GMT+6</option>
<option value="GMT+7">GMT+7</option>
<option value="GMT+8">GMT+8</option>
<option value="GMT+9">GMT+9</option>
<option value="GMT+10">GMT+10</option>
<option value="GMT+11">GMT+11</option>
<option value="GMT+12">GMT+12</option>
</select>
</div>
</div>
</div>
</div>
答案 1 :(得分:0)
此问题的原因是由于CSS选择器的优先级。 ID的优先级最高,其次是类,属性和伪类,然后是哪些元素和伪元素。
您的#SettingsOverlay div
css选择器具有比#Options
选择器和.option
选择器更高的优先级-并且因为它会影响{{1 div
的}},它会将id
的{{1}}放在每个div上。
要解决此问题,您可以向div添加一个类(这会降低其优先级),并使用该类代替SettingsOverlay
作为css选择器,如下例所示。
如果您不确定CSS的优先级,可以使用Keegan's Specificity calculator进行检查。
flex-direction
column
答案 2 :(得分:0)
#SettingsOverlay div
的特异性为(1、0、1),.option
的特异性为(0, 1, 0)
,这意味着flex-direction
中的#SettingsOverlay div
为优先。
您可以尝试将#SettingsOverlay div
更改为#SettingsOverlay > div
,以便仅将其应用于直接子级(而不是其中的任何子级)。避免使用ID的最佳做法是因为它们具有很强的特异性。
有关特殊性的更多信息,请参见https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity。
答案 3 :(得分:0)
您的问题是由于var contains = sports.OfType<Running>().Any()
在主要#SettingsOverlay的所有降级div上造成了不良行为。
如果您更改此规则的名称,则应按预期输入。
另外,我将一些参数添加到#SettingsOverlay div
div中。
.option
#SettingsOverlay {
/*display: none;*/
position: fixed;
z-index: 3;
width: 100%;
height: 100%;
background-color: rgba(48, 48, 48, 0.7);
background-size: cover;
}
#Options {
width: 80%;
height: 80%;
background-color: purple;
margin: auto;
padding: 10px;
display: flex;
flex-direction: column;
}
#Options {
display: flex;
flex-direction: column;
}
.option {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.option h2,
.option select {
display: inline-block;
width: 50%;
}