Pada klik Saya menambahkan, 1px berbatasan dengan div, jadi ukuran Div bertambah 2px X 2px. Saya tidak ingin ukuran div bertambah. Apakah ada cara sederhana untuk melakukannya?
Penjelasan Terperinci Berantakan
Sebenarnya saya menambahkan DIV dengan float: left (ukuran yang sama, seperti ikon) ke container-div, jadi semua menumpuk satu demi satu, dan ketika (lebar container-div adalah 300px) tidak ada spasi yang tersisa Anak DIV datang di baris berikutnya, jadi seperti katalog, tetapi karena perbatasan hanya ukuran DIV yang dipilih yang bertambah, DIV di bawah DIV yang dipilih pergi ke kanan dan menciptakan ruang kosong di bawah DIV yang dipilih.
EDIT:
Mengurangi Tinggi / Lebar pada seleksi, tetapi bagaimana meningkatkannya kembali. Menggunakan beberapa kerangka pihak ke-3, jadi tidak ada acara ketika DIV kehilangan pilihan ..
Jawaban:
Properti border css akan meningkatkan semua elemen ukuran "luar", kecuali tds dalam tabel. Anda bisa mendapatkan gambaran visual tentang cara kerjanya di Firebug ( dihentikan ), di bawah tab tata letak html->.
Seperti contoh, div dengan lebar dan tinggi 10px dan border 1px, akan memiliki lebar dan tinggi 12px.
Untuk kasus Anda, untuk membuatnya tampak seperti bingkai berada di "dalam" div, di kelas CSS yang Anda pilih, Anda dapat mengurangi lebar dan tinggi elemen dengan menggandakan ukuran bingkai Anda, atau Anda dapat melakukan hal yang sama untuk elemen bantalan.
Misalnya:
sumber
outline
atau perbatasan dengan warna yang sama dengan latar belakang (dan mengubah warnanya ke warna lain saat dipilih) lebih fleksibel.border-color: transparent
Ini juga membantu dalam skenario ini. ini memungkinkan Anda untuk mengatur batas tanpa mengubah lebar div
Diambil dari http://css-tricks.com/box-sizing/
sumber
atur batas di atasnya sebelum Anda mengklik agar warnanya sama dengan latar belakang.
Kemudian ketika Anda mengklik ubah saja warna latar belakang dan lebarnya tidak akan berubah.
sumber
border-color: transparent
Solusi lain yang baik adalah dengan menggunakan
outline
bukanborder
. Ini menambahkan batas tanpa mempengaruhi model kotak. Ini berfungsi di IE8 +, Chrome, Firefox, Opera, Safari.( https://stackoverflow.com/a/8319190/2105930 )
sumber
box-shadow
per jawaban saya yang lain pada pertanyaan serupa. Itu tidak memiliki dukungan browser yang sama, tetapi itu bukan masalah hari ini.box-shadow
bisa mendukung perbatasan satu sisi juga, solusi prefek.border-color: transparent
memiliki dukungan lintas-browser yang lebih baik --- lihat jawaban saya ...Coba ubah
border
keoutline
:sumber
Setelah menggunakan banyak dari solusi ini, menurut saya menggunakan trik pengaturan
border-color: transparent
menjadi yang paling fleksibel dan didukung secara luas:Mengapa lebih baik:
outline
, Anda masih dapat menentukan, misalnya, batas atas dan bawah secara terpisahsumber
transparent
inilah yang dibutuhkan!Coba ini
sumber
Saya biasanya menggunakan padding untuk mengatasi masalah ini. Padding akan ditambahkan saat pembatas menghilang dan dihapus saat pembatas muncul. Kode sampel:
Lihat kode sampel lengkap saya di JSFiddle: https://jsfiddle.net/3t7vyebt/4/
sumber
Kurangi saja lebar dan tinggi dua kali lipat dari lebar bingkai
sumber
Anda dapat melakukan beberapa hal mewah dengan bayangan inset. Contoh untuk meletakkan perbatasan di bagian bawah elemen tanpa mengubah ukurannya:
sumber
Terkadang Anda tidak ingin tinggi atau lebar terpengaruh tanpa menyetelnya secara eksplisit. Dalam hal ini, saya merasa terbantu dengan menggunakan elemen pseudo.
Anda juga dapat melakukan lebih banyak hal dengan elemen pseudo sehingga ini adalah pola yang cukup kuat.
sumber
width
danheight
dan menambahkan propertibottom
danleft
selaintop
danleft
, yang semuanya harus disetel dengan lebar yang berlawanan dari perbatasan asli (dalam kasus saya -1px). Peretasan hebatCoba kurangi ukuran margin saat Anda menambah batas
sumber
Saya harus dapat "membatasi" elemen apa pun dengan menambahkan kelas dan tidak memengaruhi dimensinya. Solusi yang baik bagi saya adalah menggunakan box-shadow. Tetapi dalam beberapa kasus, efeknya tidak terlihat karena saudara kandung lainnya. Jadi saya menggabungkan kedua bayangan kotak khas serta bayangan kotak sisipan. Hasilnya adalah tampilan tepi tanpa mengubah dimensi apa pun.
Nilai dipisahkan dengan koma. Berikut contoh sederhananya:
jsfiddle.dll
Sesuaikan dengan tampilan pilihan Anda dan Anda siap berangkat!
sumber
Kita juga bisa menggunakan fungsi css calc ()
mengurangi 2px untuk perbatasan
sumber
sumber
Anda bisa membuat elemen dengan border dengan warna yang sama dengan background Anda, lalu saat ingin menampilkan border, ubah saja warnanya.
sumber
border-color: transparent
ul li a{border-bottom:2px solid transparent;} ul li a:hover{border-bottom:2px solid red;}
Jika konten Anda
div
dirender secara dinamis dan Anda ingin menyetel tingginya, Anda dapat menggunakan trik sederhana denganoutline
:Contoh di sini: https://codepen.io/Happysk/pen/zeQzaZ
sumber
Anda dapat mencoba inset box-shadow
sesuatu seperti ini: box-shadow: inset 0px -5px 0px 0px #fff
menambahkan batas 5px putih ke bagian bawah elemen tanpa menambah ukuran
sumber