Saya butuh sesuatu seperti ini:
Bagaimana mencapai ini dengan css? Saya tahu bahwa salah satu caranya adalah menggunakan gambar latar belakang, tetapi dapatkah saya mencapai ini hanya dengan css tanpa gambar apa pun?
Saya butuh sesuatu seperti ini:
Bagaimana mencapai ini dengan css? Saya tahu bahwa salah satu caranya adalah menggunakan gambar latar belakang, tetapi dapatkah saya mencapai ini hanya dengan css tanpa gambar apa pun?
Jawaban:
Ada cara hacky untuk melakukan ini, menggunakan :before
elemen pseudo. Anda memberi :before
batas, lalu memutarnya dengan transformasi CSS. Melakukannya dengan cara ini tidak menambahkan elemen tambahan ke DOM, dan menambahkan / menghapus coretan semudah menambahkan / menghapus kelas.
:before
, namun akan menurunkan anggun di browser yang melakukan dukungan :before
tetapi tidak mendukung transformasi 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>
Anda dapat menggunakan latar belakang linear-gradient
dengan currentColor
untuk menghindari warna font hardcode:
.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>.
Jika Anda tidak membutuhkan elemen untuk sepenuhnya sebaris, Anda dapat menggunakan elemen semu untuk menempatkan garis di atas elemen. Dengan cara ini sudut dapat disesuaikan dengan mengubah ukuran elemen semu:
.strikediag {
display: inline-block;
position: relative;
}
.strikediag::before {
content: '';
position: absolute;
left: -0.1em;
right: -0.1em;
top: 0.38em;
bottom: 0.38em;
background: linear-gradient(to left top, transparent 45.5%, currentColor 47.5%, currentColor 52.5%, transparent 54.5%);
pointer-events: none;
}
The value is <span class="strikediag">2x</span> 3x<br>
The number is <span class="strikediag">1234567890</span>.
Saya pikir Anda mungkin bisa menerapkan efek rotasi ke aturan horizontal. Sesuatu seperti:
<html>
<body>
<hr />
123456
</body>
</html>
Dengan 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);
}
Jarak tempuh Anda mungkin berbeda tergantung pada browser dan versinya, jadi saya tidak yakin apakah saya akan menggunakan ini. Anda mungkin harus menggunakan beberapa kode VML yang funky untuk mendukung versi IE yang lebih lama, misalnya.
-7
derajat, bukan +7
; catatan 2: HR
berwarna abu-abu di Chrome; apakah itu mungkin untuk ditimpa?
Gradien 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)) );
Contoh saya tidak akan memenuhi kebutuhan Anda dengan sempurna tetapi, untuk info lebih lanjut dan tweak lucu, lihat http://gradients.glrzad.com/ .
Apa yang harus Anda lakukan adalah membuat background-gradient
dari white-black-white
dan posisi Anda opacity
pada sesuatu seperti 48% 50% 52%
.
Saya rasa tidak ada solusi css yang berkelanjutan untuk ini.
Solusi CSS murni saya adalah menempatkan elemen teks lain di belakang elemen teks pertama Anda yang identik dalam jumlah karakter (karakter menjadi ''), deklerasi teks baris-tayang, dan transformasi rotate.
Sesuatu seperti:
<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>
Saya berharap untuk melihat jawaban yang lebih baik dari pengguna lain.
Ini adalah pertanyaan lama tetapi sebagai alternatif Anda dapat menggunakan CSS3 Linear Gradients misalnya ( http://codepen.io/yusuf-azer/pen/ojJLoG ).
Untuk penjelasan ekstensif dan pemeriksaan 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%);
}
Saya melakukannya dengan cara ini menggunakan SVG di HTM dengan kelas CSS:
HTML:
<ul>
<li>Regular Price: <div class="zIndex-10a">$4.50</div><div class="zIndex-10b"><svg height="16" width="5"><line x1="0" y1="20" x2="40" y2="0" class="Strike-01a"></svg></div></li>
</ul>
CSS:
/* -- CONTAINS TEXT TO STRIKE ---- */ .zIndex-10a { display: inline-block; position: relative; left: 0px; z-index: 10; }
/* -- CONTAINS SVG LINE IN HTML -- */ .zIndex-10b { display: inline-block; position: relative; right: 40px; z-index: 11; }
/* -- SVG STROKE PROPERTIES ------ */ .Strike-01a { stroke: rgb(255,0,0); stroke-width:2; }
Mungkin ada cara yang lebih sederhana dan lebih mudah sekarang. Saya baru saja memasaknya untuk halaman penawaran khusus detail produk saya. Semoga bisa membantu seseorang.
Mencoba
.mydiv {
background-color: #990000;
color: #FFFF00;
font-size: 2em;
padding-top: 10px;
padding-bottom: 10px;
border-radius: 15px;
max-width: 300px;
width: 100%;
}
.strikethrough-100p, .strikethrough-50p{
position: relative;
text-align: center;
}
.strikethrough-100p:before {
position: absolute;
content: "";
left: 0;
top: 50%;
right: 0;
border-top: 3px solid;
border-color: inherit;
-webkit-transform:rotate(-5deg);
-moz-transform:rotate(-5deg);
-ms-transform:rotate(-5deg);
-o-transform:rotate(-5deg);
transform:rotate(-5deg);
}
.strikethrough-50p:before {
position: absolute;
content: "";
width:50%;
left: 25%;
top: 50%;
right: 0;
border-top: 3px solid;
border-color: inherit;
-webkit-transform:rotate(-5deg);
-moz-transform:rotate(-5deg);
-ms-transform:rotate(-5deg);
-o-transform:rotate(-5deg);
transform:rotate(-5deg);
}
<div class="mydiv">
<div class="strikethrough-100p">123456</div>
</div>
<br>
<div class="mydiv">
<div class="strikethrough-50p">123456</div>
</div>
Dan inilah versi mewahnya:
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%;
transform
yang saya tahu kecuali dapat bekerja denganfilter