2016-09-16 5 views
0

Я узнал, что > применит css, чтобы направить только ребенка. Однако я не могу использовать его в своем случае.Применить css только к прямому ребенку

У меня есть HTML, как

table[id="tbl"] div div > span { 
 
    font-weight: bold 
 
}
<table id="tbl"> 
 
    <tr> 
 
    <td> 
 
     <div> 
 
     <div> 
 
      <span> 
 
      outer span 
 
      <div> 
 
      <span> 
 
      inner span 
 
      </span> 
 
     </div> 
 
     </span> 
 
     </div> 
 
     </div> 
 
    </td> 
 
    </tr> 
 
</table>

Я хочу, чтобы сделать внешний пядь полужирный, так что я написал CSS, как показано ниже

table[id="tbl"] div div > span { 
    font-weight:bold 
} 

, но мой как пролеты приходят в смелом , Я должен сделать это без изменения html, просто используя css или jQuery по какой-то причине.

ответ

3

Внутренние элементы получают унаследованные правила стиля. Таким образом, вам необходимо переопределить ваши внутренние элементы. Кроме того, просто используйте селектор id вместо селектора атрибутов.

#tbl div div > span { 
    font-weight:bold; 
} 

#tbl div div > span span{ 
    font-weight:normal; 
} 
+0

Нельзя сделать в одном правиле? – Imad

+1

Нет. Мы не можем предотвратить наследование в таких случаях. –

0

Пожалуйста, попробуйте это работает идеальный

#tbl div div > span { 
 
    font-weight: bold; 
 
} 
 
#tbl div div > span span { 
 
    font-weight: normal !important; 
 
}
<table id="tbl"> 
 
    <tr> 
 
    <td> 
 
     <div> 
 
     <div> 
 
      <span> 
 
      outer span 
 
      <div> 
 
       <span> 
 
       inner span 
 
       </span> 
 
      </div> 
 
      </span> 
 
     </div> 
 
     </div> 
 
    </td> 
 
    </tr> 
 
</table>

+0

Не копия другого ответа? – Imad

+0

см. Изменения: font-weight: normal! Important; –

+0

Нет необходимости – Imad

2

Может быть, вы должны рассмотреть вопрос реструктуризации вашего HTML вместо этого? Вы размещаете div s внутри spans и т. Д., Что действительно не допускается в HTML (см. What elements can a span tag contain in HTML5? для получения дополнительной информации).

Менее сложное дерево упрощает писать CSS, чтобы идти с ним, и вы менее склонны рисовать себя в углу сложных выражений CSS, где изменение самой крошечной вещи может сломать все.

Добавление классов в HTML-элементы также может облегчить его стиль и, возможно, даже повысить производительность (см. https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS для некоторых подсказок к производительности CSS).

+0

Вы абсолютно правы. Но, как я уже говорил, я не могу. И причина в том, что html инкапсулирован в сторонние пользовательские элементы .net, и у меня нет доступа к его источнику. – Imad

Смежные вопросы