Мне нужно что-то вроде этого:
Как это сделать с помощью css? Я знаю, что одним способом является использование фонового изображения, но могу ли я достичь этого только с помощью css без изображения?
Мне нужно что-то вроде этого:
Как это сделать с помощью css? Я знаю, что одним способом является использование фонового изображения, но могу ли я достичь этого только с помощью css без изображения?
Существует хакерский способ сделать это, используя псевдо-элемент :before
. Вы даете границу :before
, а затем вращайте ее с помощью CSS-преобразования. Выполнение этого способа не добавляет дополнительных элементов в DOM, и добавление/удаление зачеркивания является простым, как добавление/удаление класса.
:before
, однако будет грамотно деградировать в браузерах, которые поддерживают :before
, но не поддерживают преобразования CSS..strikethrough {
position: relative;
}
.strikethrough:before {
position: absolute;
content: "";
left: 0;
top: 50%;
right: 0;
border-top: 1px solid;
border-color: inherit;
-webkit-transform:rotate(-5deg);
-moz-transform:rotate(-5deg);
-ms-transform:rotate(-5deg);
-o-transform:rotate(-5deg);
transform:rotate(-5deg);
}
<span class="strikethrough">Deleted text</span>
Вы можете использовать background linear-gradient
с currentColor
, чтобы избежать цвета шрифта жесткого диска:
.strikediag {
background: linear-gradient(to left top, transparent 47.75%, currentColor 49.5%, currentColor 50.5%, transparent 52.25%);
}
.withpadding {
padding: 0 0.15em;
}
The value is <span class="strikediag">2x</span> 3x<br>
The number is <span class="strikediag">1234567890</span>.
<p>
The value is <span class="strikediag withpadding">2x</span>3x<br>
The number is <span class="strikediag withpadding">1234567890</span>.
Думаю, вы могли бы применить эффект вращения к горизонтальному правилу. Что-то вроде:
<html>
<body>
<hr />
123456
</body>
</html>
С CSS:
HR
{
width: 50px;
position: absolute;
background-color: #000000;
color: #000000;
border-color: #000000;
transform:rotate(-7deg);
-ms-transform:rotate(-7deg);
-moz-transform:rotate(-7deg);
-webkit-transform:rotate(-7deg);
-o-transform:rotate(-7deg);
}
Ваш пробег может варьироваться в зависимости от браузера и версии, поэтому я не уверен, что я прибегу к этому. Возможно, вам придется снять какой-то фанк-код VML для поддержки старых версий IE, например.
del {
position:relative;
text-decoration:none;
}
del::after {
content:"";
position:absolute;
top:50%; left:0; width:100%; height:1px;
background:black;
transform:rotate(-7deg);
}
Градиент CSS3
background-image: linear-gradient(left bottom, rgb(234,20,136) 0%, rgb(255,46,164) 50%, rgb(255,74,197) 0%);
background-image: -o-linear-gradient(left bottom, rgb(234,20,136) 0%, rgb(255,46,164) 50%, rgb(255,74,197) 0%);
background-image: -moz-linear-gradient(left bottom, rgb(234,20,136) 0%, rgb(255,46,164) 50%, rgb(255,74,197) 0%);
background-image: -webkit-linear-gradient(left bottom, rgb(234,20,136) 0%, rgb(255,46,164) 50%, rgb(255,74,197) 0%);
background-image: -ms-linear-gradient(left bottom, rgb(234,20,136) 0%, rgb(255,46,164) 50%, rgb(255,74,197) 0%);
background-image: -webkit-gradient( linear, left bottom,right top,color-stop(0, rgb(234,20,136)), color-stop(0.5, rgb(255,46,164)), color-stop(0, rgb(255,74,197)) );
Мой пример не заполнит ваши потребности, но для более подробной информации и смешных твиков: http://gradients.glrzad.com/
Что вам нужно сделать, так это создать фоновый градиент белого-черно-белого и поместить вашу непрозрачность на более эффективную линию 48% 50% 52%
Выполнять
Я не думаю, что для этого существует устойчивое решение css.
Мое чистое решение CSS должно было бы разместить другой элемент текста за вашим первым элементом текста, который будет идентичен по количеству символов (символы "'), текстовому прокручиванию строки и преобразованию поворота.
Что-то вроде:
<html>
<head>
<style>
.strike{
text-decoration: line-through;
-webkit-transform: rotate(344deg);
-moz-transform: rotate(344deg);
-o-transform: rotate(344deg);}
</style>
</head>
<body>
<p>Text to display</p>
<p class='strike'> </p>
</body>
Я с нетерпением жду лучшего ответа от других пользователей.
Это старый вопрос, но в качестве альтернативы вы можете использовать линейные градиенты CSS3, например (http://codepen.io/yusuf-azer/pen/ojJLoG).
Для подробного объяснения и проверки LESS Solution
http://www.yusufazer.com/tutorials-how-to/how-to-make-a-diagonal-line-through-with-css3/
span.price--line-through {
background-color: transparent;
background-image: -webkit-gradient(linear, 19.1% -7.9%, 81% 107.9%, color-stop(0, #fff), color-stop(.475, #fff), color-stop(.5, #000), color-stop(.515, #fff), color-stop(1, #fff));
background-image: -webkit-repeating-linear-gradient(287deg, #fff 0%, #fff 47.5%, #000 50%, #fff 51.5%, #fff 100%);
background-image: repeating-linear-gradient(163deg, #fff 0%, #fff 47.5%, #000 50%, #fff 51.5%, #fff 100%);
background-image: -ms-repeating-linear-gradient(287deg, #fff 0%, #fff 47.5%, #000 50%, #fff 51.5%, #fff 100%);
}
И вот причудливая версия:
background:none repeat scroll 0 0 rgba(255, 0, 0, 0.5);
-moz-border-radius:20px 0;
-webkit-border-radius:20px 0;
border-radius:20px 0;
content: "";
height:5px; left:-5%;
position:absolute;
top:30%;
-moz-transform:rotate(-7deg);
-webkit-transform:rotate(-7deg);
transform:rotate(-7deg);
transform-origin:50% 50% 0;
width:110%;