Задачка на смекалку:
Есть тег p такого вида
<p> <br/> Тут текст <br/> Ещё текст ... </p> и такого: <p> Тут текст <br/> Ещё текст ... </p> Задача - по возможности убить c помощью css тег <br/> (oтступ) в начале первой строки визуально; (не убивая <br/>, которые могут быть далее по тексту) Теги <p> как первого так и второго типа на странице расположены произвольно (как кол-во так и последовательность) |
p:first-line{
line-height:0;
}
|
а можно проще:
p br:first-child {
display: none;
}
|
EmperioAf,
1. Есть и теги <p> без <br> в первой строке 2. В псевдо элементе :first-line допустимы только изменения правил для правил font и line-height Проверка:
<!DOCTYPE html>
<html>
<head>
<style>
body{
margin:0;
padding:0;
}
p {
border:blue solid 1px;
}
p:first-line{
line-height:0;
}
</style>
</head>
<body>
<!-- Вариант-1 тега <p> -->
<p>
<br/>
Тут текст - 1 <br>
Еще текст
</p>
<!-- Вариант-2 тега <p> -->
<p>
Тут текст - 2 <br>
Еще текст
</p>
</body>
</html>
|
не понял, почему нельзя написать так:
p *:first-child {
display: none;
}
? |
EmperioAf,
Для второго тега <p> - убъётся перевод строки |
Deff,
:-?
<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
<style>
body{
margin:0;
padding:0;
}
p {
border:blue solid 1px;
}
p > br{
display: none;
}
</style>
</head>
<body>
<p>
<br/>
Тут текст - 1
</p>
<p>
Тут текст - 2 <br>
Еще текст
</p>
</body>
</html>
|
Deff,
или надо так?
<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
<style>
body{
margin:0;
padding:0;
}
p {
border:blue solid 1px;
}
p:first-of-type > br{
display: none;
}
</style>
</head>
<body>
<p>
<br/>
Тут текст - 1
</p>
<p>
Тут текст - 2 <br>
Еще текст
</p>
</body>
</html>
|
рони, поставил бы + (2-й твой) Если б мог
Но теги <p> (как Вариантов 1, так и 2) рандомно разбросаны по странице, хитрость не проходит |
Цитата:
|
EmperioAf,
Ну скриптом задача решается. Вопрос: решается ли через css ? |
Цитата:
Разве в CSS есть инструменты определения, что элемент является TextNode? |
EmperioAf,
Я бы сформулировал так: - Скрыть первую строку в <p> при наличии в ней тега <br> -------------------------------- Тег <br> идёт сразу за тегом родителя <p> Т.е. вид HTML: <p><br>... </p> . |
рони, - отлично, ток в старой опере так: http://savepic.su/5767635.jpg
Наверно нун хаккать для старой оперы(12.15) margin-top ? (компенсировать отступ наездом на предэлемент ?) Да и в Mozilla Firefox так же ====================== В яндексе и Гугол-хроме все без отступа, в Опере и Мозилле с отступом |
Вариант:
<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
<style>
body{
margin:0;
padding:0;
}
p {
border:blue solid 1px;
}
p > br {
display:block;
height:0;
line-height:0;
font-size:0;
}
</style>
</head>
<body>
<p>
Тут текст - 2 <br>
Еще текст
</p>
<p>
<br/>
Тут текст - 1
</p>
<p>
<br/>
Тут текст - 1
</p>
<p>
Тут текст - 2 <br>
Еще текст
</p>
<p>
<br/>
Тут текст - 1
</p>
</body>
</html>
:( не работает В Хроме и Яндексе |
рони,
Да, в Опере работает, осталась Мозилла... Скомпоновать бы мой и твой из поста 14 |
Deff,
нерабочие у меня варианты -- удалил. |
Так решения так и не нашли?)
|
Есть уточнение, что если тег <br> первый, он идёт вплотную после родителя:
<p><br>... |
Любопытно. :)
Попробуйте так:
<!DOCTYPE html>
<html>
<head>
<style>
p {
outline: dashed 1px black;
}
p::first-line {
line-height: 0;
}
p::first-letter {
line-height: 1;
}
</style>
</head>
<body>
<p>
<br>
Hello
<br>
Plunker
<br>!
</p>
<p>
Hello
<br>
Plunker
<br>!
</p>
</body>
</html>
P.S. Не работает в FF, как минимум. |
mikhail.golovkin,
а добавить run для запуска кода? и в опере сами смотрели? |
Цитата:
Цитата:
В FF не работает (ubuntu, windows, android), но решение для FF написано выше самим автором. |
| Часовой пояс GMT +3, время: 08:38. |