Мне нужно реализовать прозрачное зачеркивание текста с помощью CSS, поэтому не придется заменять тег <H1> на тега <IMG>.
Мне удалось реализовать линии через текст с помощью CSS, но я не могу сделать его прозрачным.
Желаемый эффект:
Вот мой код:
body{
background: url(http://lorempixel.com/output/people-q-c-640-480-1.jpg);
background-size:cover;
}
h1{
font-family:arial;
position:relative;
display:inline-block;
}
h1:after{
content:'';
position:absolute;
width:100%;
height:2px;
left:0; top:17px;
background:#fff;
}
html
<h1>EXAMPLE</h1>
Как я могу реализовать прозрачное зачеркивание моего текста, которое позволяет в фоновом режиме появляться в этой строке. @Kael
комментарии:
это образ, который, скорее всего, создан в Illustrator, где был обтравочной маской, использованный для "вырезания" этой линии по всему тексту, позволяя тем самым видеть фон за ним. Не может быть сделано в HTML и CSS – @Chris M
@Chris M думал, что "cut out" эффект часто не достижим с помощью CSS,
это одно. – @web-tiki
@веб-тики ОК, я думаю, технически, вы выполняли его с хаком. Ты на самом деле пишешь два слова для отрезание частей. Я не понимаю, почему line-height:0 сдвигает текст вверх, показывая нижнюю половину вместо верхней. – @Chris M
@ChrisM ну это все зависит от того, что вы считаете халтурой. Код CSS/HTML является действительным, согласно стандарта W3, в моей реализации. Текст показывает только нижнюю часть, именно из-за line-height:0, это вертикально центрирует текст в верхней части контейнера и, как я установил overlow:hidden в контейнере, только в нижней части текста. – @web-tiki
ага! Я буду играть с line-height. это не правило, я очень часто использовал. Я думаю, когда применяют line-height:0 вcё его содержимое полностью исчезает. Очевидно, что это не так. @Chris M
@ChrisM не скрывает его полностью, потому что я задаю высоту элемента. overflow:hidden; свойство прячет в зависимости от высоты, но не в зависимости от line-height @web-tiki
Источник: transparent strikethrought on text
body {
background: url(https://i.ytimg.com/vi/tntOCGkgt98/maxresdefault.jpg);
background-size: cover;
}
h1 {
font-size: 100px;
position: relative;
margin-top: 1.6em;
}
h1 span {
opacity: 0;
display: inline-block;
font-size: inherit;
}
h1:after,
h1:before {
position: absolute;
left: 0;
top: 0;
content: attr(data-text);
overflow: hidden;
-webkit-clip-path: polygon(0% 0%, 100% 0%, 100% 47%, 0% 47%);
clip-path: polygon(0% 0%, 100% 0%, 100% 47%, 0% 47%);
}
h1:after {
content: attr(data-text);
top: auto;
bottom: 0;
-webkit-clip-path: polygon(0% 53%, 100% 53%, 100% 100%, 0% 100%);
clip-path: polygon(0% 53%, 100% 53%, 100% 100%, 0% 100%);
}
<h1 data-text="TEXT"><span>TEXT</span></h1>
Вы можете достичь прозрачного перечеркивания текста только с помощью CSS с использованием line-height и overflow:hidden свойств.
Demo : CSS transparent strike through
Скриншот примера:
Объяснение :
<H1> height:0.52em;
overflow:hidden; использовать em units так, что высота подстраивается под размер шрифта для тега <h1>custom данные атрибута для того, чтобы сохранить все содержимое в
разметке и поэтому не нужно будет редактировать CSS для каждого
заголовка.line-height:0;код примера:
body{
background: url(http://lorempixel.com/output/people-q-c-640-480-1.jpg);
background-size:cover;
}
h1{
font-family:arial;
position:relative;
}
h1 span, h1:after{
display:inline-block;
height:0.52em;
overflow:hidden;
font-size:5em;
}
h1:after{
content: attr(data-content);
line-height:0;
position:absolute;
top:100%; left:0;
}
<h1 data-content="EXAMPLE" ><span>EXAMPLE</span></h1>
ответил: web-tiki
Вариант с применением SVG
Другой подход для этого эффекта является использование SVG с элементом маски.
Пример соответствующего кода на codepen
*{margin:0;padding:0;}
html,body{height:100%;}
body{background: url(https://farm8.staticflickr.com/7140/13689149895_0cce1e2292_o.jpg) center bottom; background-size:cover;text-align:center;}
svg{
text-transform:uppercase;
color:darkorange;
background: rgba(0,0,0,0.5);
margin-top:5vh;
width:85%;
padding:0;
}
<svg viewbox="0 0 100 13">
<defs>
<mask id="strike">
<rect x="0" y="0" width="100" height="13" fill="#fff" />
<rect x="0" y="5" width="100" height="1" />
</mask>
</defs>
<text id="text1" x="50" y="8.5" font-size="7" text-anchor="middle" fill="darkorange" mask="url(#strike)">SVG strike through</text>
</svg>
ответил: web-tiki
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости