我有以下HTML結構。根據周圍同級元素的存在選擇元素
<div class="fieldset">
<p>Normal Input<i class="icon-question tooltip-top" title="Text Goes Here"></i></p>
<div>
<span><i class="icon-cart"></i></span>
<input name="">
<span><i class="icon-cart"></i></span>
<i class="icon-question tooltip-top" title="Text Goes Here"></i>
</div>
</div>
我想根據其中<input>
定位改變邊界半徑的設置。
例如,如果<input>
在它之前有一個<span>
,則它的邊界半徑將從頂部和底部左側爲零。
我這樣做是通過使用:
.fieldset > div > span + input {
border-radius: 0 4px 4px 0;
}
但是,當存在<input>
後<span>
輸入邊框半徑應只從右側的頂部和底部爲零。很明顯,我不能使用+
選擇器。
如何在<span>
在<input>
之後達到預期效果,而不使用JavaScript並更改HTML?
UPDATE:
按照下面的答案,尤其是BoltClock♦方法 - 看來這個問題幾乎解決了!下面的圖片演示了所有不同的場景以及用於應用它們的代碼。
唯一還沒有工作的情況是輸入前只有一個範圍。
目前的CSS是:
/*Fieldsets*/
.fieldset {
width: 100%;
display: table;
position: relative;
white-space: nowrap;
margin-bottom: 15px;
}
.fieldset:last-of-type {
margin-bottom: 0;
}
/*Fieldsets > Labels*/
.fieldset > p {
width: 1%;
margin-bottom: 3px;
}
/*Fieldsets > Input Container*/
.fieldset > div {
display: table-row;
position: relative;
}
.fieldset > div > * {
display: table-cell;
white-space: nowrap;
vertical-align: middle;
position: relative;
}
/*Fieldsets > Input + Icon*/
.fieldset > div > span {
border: 1px solid #B0C2CE;
padding: 5px 15px;
font-weight: bold;
width: 1%;
}
/*Fieldsets > Input + Icon Senarios*/
.fieldset > div > span:first-of-type {
border-right: 0;
border-radius: 4px 0 0 4px;
}
.fieldset > div > span:last-of-type {
border-left: 0;
border-radius: 0 4px 4px 0;
}
.fieldset > div > span:not(:only-of-type) + input {
border-radius: 0;
}
.fieldset > div > span + input,
.fieldset > div > span + textarea,
.fieldset > div > span + select,
.fieldset > div > span + .select-dropdown-single .select-dropdown-input,
.fieldset > div > span + .select-dropdown-multi .select-input {
border-radius: 0 4px 4px 0;
}
/*Fieldsets > Input + Help toolTip icon*/
.fieldset > div [class^="tooltip-"],
.fieldset > div [class*=" tooltip-"] {
text-align: center;
width: 30px;
}
的HTML:
<div class="fieldset">
<p>Normal Input</i></p>
<div>
<input name="">
</div>
</div>
<div class="fieldset">
<p>Normal Input</p>
<div>
<span><i class="icon-cart"></i></span>
<input name="">
</div>
</div>
<div class="fieldset">
<p>Normal Input</p>
<div>
<span><i class="icon-cart"></i></span>
<input name="">
<span><i class="icon-cart"></i></span>
</div>
</div>
<div class="fieldset">
<p>Normal Input</p>
<div>
<span><i class="icon-cart"></i></span>
<input name="">
<span><i class="icon-cart"></i></span>
<i class="icon-question tooltip-top" title="Text Goes Here"></i>
</div>
</div>
你能改變html代碼嗎?如果_yes_只是簡單地將一個類添加到您的跨度,取決於它的位置。 – 2015-04-01 12:57:50
我可以簡單地給主容器一個相應的類,但我想看看是否有辦法做到這一點,而不需要改變HTML。 – Leo 2015-04-01 12:58:38
那麼你應該將'border-radius 0'添加到'中。字段集> DIV>輸入+ span'(如果跨度爲輸入後直接兄弟姐妹) – 2015-04-01 13:00:10