Klien menginginkan dua batas warna untuk tampilan timbul. Bisakah saya melakukan ini pada satu elemen? Saya berharap untuk menghindari menumpuk dua elemen DOM dengan batas individu.
Ya: Gunakan outlineproperti; itu bertindak sebagai perbatasan kedua di luar perbatasan Anda. Berhati-hatilah, tho ', itu dapat berinteraksi dengan cara miring dengan margin, paddings dan drop-shadow. Di beberapa browser, Anda mungkin juga harus menggunakan awalan khusus browser; untuk memastikannya menangkapnya: -webkit-outlinedan sejenisnya (meskipun WebKit secara khusus tidak memerlukan ini).
Ini juga dapat berguna dalam kasus di mana Anda ingin membuang kerangka untuk browser tertentu (seperti kasus jika Anda ingin menggabungkan garis besar dengan bayangan jatuh; di WebKit garis besar berada di dalam bayangan; di FireFox itu adalah di luar, jadi -moz-outline: 0berguna untuk memastikan bahwa Anda tidak mendapatkan garis kusut di sekitar drop shadow CSS Anda yang indah).
Sunting: Beberapa orang berkomentar bahwa outlinetidak cocok dengan IE <8. Meskipun ini benar; mendukung IE <8 sebenarnya bukanlah sesuatu yang harus Anda lakukan.
-1 untuk "mendukung IE <8 sebenarnya bukan sesuatu yang harus Anda lakukan". Tidak mendukung IE6 mungkin baik-baik saja. Tetapi tidak mendukung IE7 itu konyol, tidak ada situs dengan pemirsa non-teknis yang mampu membelinya
Pekka
6
outlinetelah ada sejak CSS2.
BoltClock
156
+1 untuk tidak mendukung IE 7, sementara situs Anda harus selalu berfungsi dan terlihat cukup baik di IE 7, dukungan penuh tidak diperlukan. terutama jika itu hanya batas dua warna. Saya pribadi menggunakan box-shadow dan fitur 'lanjutan' lainnya. IE7 tidak bisa melihat box-shadow, ... masalah besar. tidak ada alasan untuk menggunakan solusi yang kurang cocok, terlalu rumit, atau bahkan ketinggalan jaman, hanya untuk mengatasi kebiasaan IE7.
Marian Theisen
2
Juga, lihat referensi ini untuk alasan aksesibilitas yang baik JANGAN meretas properti garis besar untuk tujuan desain: outlinenone.com
Joel Glovier
11
Sebuah kata hati-hati, outlinekurang fleksibel dari border. Secara khusus, W3C mengatakan : "Catatan. Garis luarnya sama di semua sisi. Berbeda dengan perbatasan, tidak ada properti 'garis atas' atau 'garis kiri' ." (Penekanan saya.)
Bob Stein
68
Ini sangat mungkin. Ini hanya membutuhkan sedikit tipuan CSS!
Memang rumit, tetapi menurun dengan anggun dan bahkan berfungsi pada browser stok HTC saya (Android)! Jika Anda menggunakan border-radius, coba kurangi radius batas dalam sebesar satu piksel, yang akan membuat jarak antara dua tepi bulat hampir tidak terlihat.
flu
Ini bagus. Menggunakan bottom:1pxdaripada height:100%bekerja lebih baik bagi saya hanya untuk batas bawah :)
Nick
jika Anda memiliki padding untuk itu div.border, saya menemukan bahwa menambahkan margin negatif dengan dimensi yang sama untuk div.border:before, membantu menjaga semuanya tetap sejajar. Mungkin ada cara yang lebih baik untuk melakukannya? jsFiddle
NW Tech
1 untuk menggunakan elemen semu. Saya pikir jawaban ini lebih baik daripada jawaban Williham Totland
Bekerja dengan baik, tetapi hanya jika Anda memiliki konten dengan latar belakang.
Culme
4
Jika yang Anda maksud dengan "emboss" adalah dua batas yang mengelilingi satu sama lain dengan dua warna berbeda, ada outlineproperti ( outline-left,outline-right ....) tetapi tidak didukung dengan baik di keluarga IE (yaitu, IE6 dan 7 tidak mendukung sama sekali ). Jika Anda membutuhkan dua batas, elemen pembungkus kedua memang yang terbaik.
Jika Anda bermaksud menggunakan dua warna di perbatasan yang sama. Gunakan mis
border-right:1px white solid;
border-left:1px black solid;
border-top:1px black solid;
border-bottom:1px white solid;
ada yang khusus border-stylesuntuk ini juga ( ridge, outsetdan inset) tetapi mereka cenderung bervariasi di seluruh browser menurut pengalaman saya.
Saya percaya apa yang dia tanyakan adalah sesuatu seperti border : black white; yang berarti mendefinisikan dua warna berbeda untuk satu perbatasan yang terlihat berurutan pada waktu yang sama.
Tarik
1
@Braveyard ah, begitu. Itu secara teoritis mungkin digunakan outlinetetapi tidak akan bekerja dengan baik di IE <8
Pekka
3
Perhatikan bahwa hanya ada garis ... sayangnya tidak ada yang namanya garis-kiri, garis-kanan, garis-atas, atau garis-bawah.
David Sherret
-1
Tidak mungkin, tetapi Anda harus memeriksa untuk melihat apakah border-stylenilai-nilai seperti inset, outsetatau yang lain, mencapai efek yang Anda inginkan .. ( meskipun saya ragu .. )
Jawaban:
Ya: Gunakan
outline
properti; itu bertindak sebagai perbatasan kedua di luar perbatasan Anda. Berhati-hatilah, tho ', itu dapat berinteraksi dengan cara miring dengan margin, paddings dan drop-shadow. Di beberapa browser, Anda mungkin juga harus menggunakan awalan khusus browser; untuk memastikannya menangkapnya:-webkit-outline
dan sejenisnya (meskipun WebKit secara khusus tidak memerlukan ini).Ini juga dapat berguna dalam kasus di mana Anda ingin membuang kerangka untuk browser tertentu (seperti kasus jika Anda ingin menggabungkan garis besar dengan bayangan jatuh; di WebKit garis besar berada di dalam bayangan; di FireFox itu adalah di luar, jadi
-moz-outline: 0
berguna untuk memastikan bahwa Anda tidak mendapatkan garis kusut di sekitar drop shadow CSS Anda yang indah).Sunting: Beberapa orang berkomentar bahwa
outline
tidak cocok dengan IE <8. Meskipun ini benar; mendukung IE <8 sebenarnya bukanlah sesuatu yang harus Anda lakukan.sumber
outline
telah ada sejak CSS2.outline
kurang fleksibel dariborder
. Secara khusus, W3C mengatakan : "Catatan. Garis luarnya sama di semua sisi. Berbeda dengan perbatasan, tidak ada properti 'garis atas' atau 'garis kiri' ." (Penekanan saya.)Ini sangat mungkin. Ini hanya membutuhkan sedikit tipuan CSS!
Itukah yang kamu cari?
sumber
border-radius
, coba kurangi radius batas dalam sebesar satu piksel, yang akan membuat jarak antara dua tepi bulat hampir tidak terlihat.bottom:1px
daripadaheight:100%
bekerja lebih baik bagi saya hanya untuk batas bawah :)div.border
, saya menemukan bahwa menambahkan margin negatif dengan dimensi yang sama untukdiv.border:before
, membantu menjaga semuanya tetap sejajar. Mungkin ada cara yang lebih baik untuk melakukannya? jsFiddleCara lain adalah dengan menggunakan
box-shadow
:Lihat contoh di sini.
sumber
Sudahkah Anda mencoba gaya batas berbeda yang tersedia dalam spesifikasi CSS? Sudah ada dua gaya pembatas yang mungkin mengakomodasi kebutuhan Anda:
Atau
sumber
Garis luarnya bagus, tetapi hanya jika Anda menginginkan garis tepi di sekeliling.
Katakanlah jika Anda ingin membuatnya hanya di bagian bawah atau atas yang dapat Anda gunakan
Dan untuk bagian bawah:
Semoga ini bisa membantu.
sumber
Alih-alih menggunakan garis besar yang tidak didukung dan bermasalah, gunakan saja
Contoh:
HTML:
CSS:
TEST (JSFiddle) :
Tampilkan cuplikan kode
sumber
Jika yang Anda maksud dengan "emboss" adalah dua batas yang mengelilingi satu sama lain dengan dua warna berbeda, ada
outline
properti (outline-left
,outline-right
....) tetapi tidak didukung dengan baik di keluarga IE (yaitu, IE6 dan 7 tidak mendukung sama sekali ). Jika Anda membutuhkan dua batas, elemen pembungkus kedua memang yang terbaik.Jika Anda bermaksud menggunakan dua warna di perbatasan yang sama. Gunakan mis
ada yang khusus
border-styles
untuk ini juga (ridge
,outset
daninset
) tetapi mereka cenderung bervariasi di seluruh browser menurut pengalaman saya.sumber
border : black white;
yang berarti mendefinisikan dua warna berbeda untuk satu perbatasan yang terlihat berurutan pada waktu yang sama.outline
tetapi tidak akan bekerja dengan baik di IE <8Tidak mungkin, tetapi Anda harus memeriksa untuk melihat apakah
border-style
nilai-nilai sepertiinset
,outset
atau yang lain, mencapai efek yang Anda inginkan .. ( meskipun saya ragu .. )CSS3 memiliki properti gambar batas , tetapi saya belum mengetahui tentang dukungan dari browser (info lebih lanjut di http://www.css3.info/preview/border-image/ ) ..
sumber
Cukup tulis
style="border:medium double;"
untuk tag html
sumber
Anda bisa menggunakan
sumber
Ini menghasilkan efek yang bagus.
sumber