Bagaimana cara menghapus lekukan dari item daftar yang tidak diurutkan?

260

Saya ingin menghapus semua lekukan dari ul. Saya mencoba setting margin, padding, text-indentuntuk 0, tetapi tidak berhasil. Tampaknya menetapkan text-indentke angka negatif dapat membantu - tetapi apakah itu satu-satunya cara untuk menghapus lekukan?

antonpug
sumber
Sulit dikatakan tanpa HTML & CSS Anda tetapi menggunakan Reset / Normalisasi CSS yang terdiri dari aturan ul {padding: 0; margin: 0;} melakukan trik dalam banyak kasus. Saya yakin indentasi teks tidak ada hubungannya dengan itu.
Jawad
Tanpa melihat apa yang sebenarnya Anda lakukan, sulit untuk mengatakan apa masalahnya. Pengaturan kedua margin dan padding pada ul ke 0 harus bekerja lintas browser.
kinakuta
6
"Tidak berhasil. Dan tidak dapat menggunakan reset CSS. Perubahan saya adalah bagian dari kerangka web raksasa dengan lebih dari 60 orang bekerja di sana haha" - Haha memang. Daripada Anda belum mengajukan pertanyaan Anda dengan jelas!
Jawad

Jawaban:

417

Setel gaya daftar dan padding kiri menjadi kosong.

ul {
    list-style: none;
    padding-left: 0;
}​

Untuk mempertahankan peluru, Anda dapat mengganti list-style: nonedengan list-style-position: insideatau steno list-style: inside:

ul {
  list-style-position: inside;
  padding-left: 0;
}

j08691
sumber
18
Anda dapat menghapus indentasi dan menyimpan penomoran / peluru dengan: ul {list-style-position: inside; padding-left: 0;}
Myforwik
4
Nah, sekarang setelah Anda mengedit jawaban Anda, bullet tetap dipertahankan, tetapi masih ada masalah bahwa <li> dengan beberapa baris teks tidak membuat indentasi semua baris dengan benar. Kalau Anda terus mengedit akhirnya Anda mungkin berakhir dengan solusi saya. : D
Jpsy
Solusi kedua yang menjaga peluru sepertinya tidak berfungsi lagi (Chrome 55 di Windows). Ada alternatif?
Tom Pažourek
2
@ TomPažourek Coba list-style-position: outside; padding-left: 1em;di<ul>
j08691
1
@ j08691: Ya, itu berhasil, meskipun 1emmasalahnya sedikit nilai magis ... Dan sebenarnya masih ada sedikit lekukan yang tersisa.
Tom Pažourek
93

Solusi pilihan saya untuk menghapus lekukan <ul> adalah CSS sederhana satu-baris:

ul { padding-left: 1.2em; }
<p>A leading line of paragraph text</p>
<ul>
    <li>Bullet points align with paragraph text above.</li>
    <li>Long list items wrap around correctly. Long list items wrap around correctly. Long list items wrap around correctly. Long list items wrap around correctly. Long list items wrap around correctly. </li>
    <li>List item 3</li>
</ul>
<p>A trailing line of paragraph text</p>

Solusi ini tidak hanya ringan, tetapi memiliki beberapa keunggulan:

  • Itu dengan baik menyelaraskan poin bullet <ul> ke teks paragraf normal di sekitarnya (= indentasi dari <ul> dihapus).
  • Blok teks dalam elemen <li> tetap terindentasi dengan benar jika mereka membungkus menjadi beberapa baris.

Info lawas:
Untuk IE versi 8 dan di bawah Anda harus menggunakan margin-kiri sebagai gantinya:

    ul { margin-left: 1.2em; }
Jpsy
sumber
Saya sudah menjelaskan semua masalah di postingan saya, @aioobe. Tetapi di sini lagi: Jawaban yang diterima (status seperti sekarang, karena setelah posting asli saya telah diedit beberapa kali untuk memperbaikinya) sekarang mempertahankan peluru (jika Anda menggunakan contoh kedua yang diberikan), tetapi tidak dengan benar membuat indentasi multiline berpoin. teks. Berikut ini biola dari contoh kedua dari jawaban yang diterima, dimodifikasi untuk menunjukkan efeknya: jsfiddle.net/v6nyuq6f/88 Dan di sini adalah biola yang sama dikoreksi dengan pendekatan saya: jsfiddle.net/v6nyuq6f/89
Jpsy
Jadi ini tahun 2016 dan mengandalkan beberapa nilai yang "tidak sempurna untuk semua browser" adalah solusi terbersih untuk masalah yang cukup umum ini. Apakah ada cara untuk mendapatkan lebar yang tepat dari simbol item, mungkin menggunakan fitur CSS3?
F30
Untuk amannya:ul { padding-left:1.2em; margin-left: 0; }
Andrew Murphy
1
Hanya solusi pada halaman ini, yang bekerja dengan benar dengan item daftar panjang (membungkus dengan benar) - Terima kasih!
FredyWenger
8

Tambahkan ini ke CSS Anda:

ul { list-style-position: inside; }

Ini akan menempatkan elemen li dalam indentasi yang sama dengan paragraf dan teks lainnya.

Ref: http://www.w3schools.com/cssref/pr_list-style-position.asp

Graham
sumber
6
Pada <li> dengan beberapa baris teks, list-style-position: insidesejajarkan teks dari baris kedua dan selanjutnya dengan bullet. Ini tentu tidak diinginkan.
Jpsy
7

display:table-row; juga akan menghilangkan lekukan tetapi akan menghapus peluru.

Dov Miller
sumber
5

Lepaskan bantalan:

padding-left: 0;
John Conde
sumber
4

Dapatkah Anda menyediakan sebuah sambungan ? terima kasih saya bisa melihatnya Kemungkinan besar pemilih css Anda tidak cukup kuat atau dapat Anda coba

padding:0!important;

naeluh
sumber
1
Dimensi tidak diperlukan saat menentukan 0.
raam86
11
!importantis EVIL
Madbreaks
@Madbreaks Ini dapat berfungsi jika pemilihnya adalah yang benar dan use case benar tetapi prob kanan Anda bukan yang ini, mungkin dalam kasus ini ada aturan css utama yang perlu diganti dengan mengubah file dasar, jadi tetap di taktik seperti tidak meretas inti? Saya tidak tahu, mungkin saya salah
naeluh
4

Saya memiliki masalah yang sama dengan catatan kaki yang saya coba bagi. Saya menemukan bahwa ini berhasil bagi saya dengan mencoba beberapa saran di atas digabungkan:

footer div ul {
    list-style-position: inside;
    padding-left: 0;
}

Ini sepertinya menyimpannya di kiri di bawah h1 saya dan poin-poin di dalam div daripada di luar ke kiri.

Gary Ford
sumber
3

Demo langsung: https://jsfiddle.net/h8uxmoj4/

ol, ul {
  padding-left: 0;
}

li {
  list-style: none;
  padding-left: 1.25rem;
  position: relative;
}

li::before {
  left: 0;
  position: absolute;
}

ol {
  counter-reset: counter;
}

ol li::before {
  content: counter(counter) ".";
  counter-increment: counter;
}

ul li::before {
  content: "●";
}

Karena pertanyaan awal tidak jelas tentang persyaratannya, saya berusaha menyelesaikan masalah ini dalam pedoman yang ditetapkan oleh jawaban lain. Khususnya:

  • Sejajarkan daftar peluru dengan teks paragraf luar
  • Sejajarkan beberapa baris dalam item daftar yang sama

Saya juga menginginkan solusi yang tidak bergantung pada browser yang menyetujui berapa banyak bantalan yang digunakan. Saya telah menambahkan daftar yang dipesan untuk kelengkapan.

Corey
sumber
-1

Melakukan inline ini, saya mengatur margin ke 0 (ul style = "margin: -0px"). Peluru sejajar dengan paragraf tanpa overhang.

Jael Faulcon 323-743-3816
sumber
Saya tidak mengerti mengapa Anda dipilih selain tanda negatif di depan nol. Saya mencoba ini di Google Chrome dan berhasil, sedangkan solusi padding-left: 0 tidak. Ini ada di Google Chrome Version 79.0.3945.88 WinX, 64 bit.
MrPotatoHead
Menambahkan ke komentar saya di atas ... karena saya tidak dapat mengeditnya ... Saya bermain dengan ini sedikit lebih, dan pada Firefox terbaru (71.0), perilakunya sama. Namun, ini dengan daftar tidak berurutan (ul). Saat menggunakan daftar yang diurutkan (ol), 1.2em tampaknya menyelaraskan tepi kiri daftar dengan margin kiri teks lain (per jawaban Jpsy di atas).
MrPotatoHead