Làm thế nào để loại bỏ vết lõm khỏi một mục danh sách không có thứ tự?


260

Tôi muốn loại bỏ tất cả các vết lõm từ ul. Tôi cố gắng thiết lập margin, padding, text-indentđể 0, nhưng vô ích. Có vẻ như cài đặt text-indentthành số âm sẽ thực hiện mẹo - nhưng đó có thực sự là cách duy nhất để loại bỏ vết lõm?


Khó có thể nói ra HTML & CSS của bạn nhưng sử dụng CSS Reset / Chuẩn hóa bao gồm các quy tắc ul {padding: 0; lề: 0;} thực hiện thủ thuật trong hầu hết các trường hợp. Tôi chắc chắn văn bản thụt lề không có gì để làm với nó.
Jawad

Không nhìn thấy những gì bạn đang thực sự làm, thật khó để nói vấn đề là gì. Đặt cả lề và phần đệm trên ul thành 0 sẽ hoạt động trên nhiều trình duyệt.
kinakuta

6
"Không hoạt động. Và không thể sử dụng thiết lập lại CSS. Những thay đổi của tôi là một phần của khung web khổng lồ với hơn 60 người làm việc trên đó haha" - Haha thực sự. Hơn bạn chưa hỏi câu hỏi của bạn rõ ràng!
Jawad

Câu trả lời:


416

Đặt kiểu danh sách và phần đệm bên trái thành không có gì.

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

Để duy trì đạn, bạn có thể thay thế list-style: nonebằng list-style-position: insidehoặc tốc ký list-style: inside:

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


18
Bạn có thể xóa các vết lõm và giữ số / đạn bằng cách: ul {list-style-location: bên trong; padding-left: 0;}
Myforwik

4
Chà, bây giờ bạn đã chỉnh sửa câu trả lời của mình, các viên đạn vẫn được duy trì, nhưng vẫn còn vấn đề là <li> s với nhiều dòng văn bản không thụt lề chính xác tất cả các dòng. Nếu bạn tiếp tục chỉnh sửa, cuối cùng bạn có thể kết thúc với giải pháp của tôi. : D
Jpsy 15/03/2015

Giải pháp thứ hai giúp viên đạn dường như không còn hoạt động nữa (Chrome 55 trên Windows). Bất kỳ lựa chọn thay thế?
Tom Pažourek

2
@ TomPažourek Hãy thử list-style-position: outside; padding-left: 1em;trên<ul>
j08691

1
@ j08691: Vâng, nó hoạt động, mặc dù 1emđiều này có một chút giá trị kỳ diệu ... Và thực sự vẫn còn một chút thụt đầu dòng còn sót lại.
Tom Pažourek

93

Giải pháp ưa thích của tôi để xóa <ul> thụt lề là một lớp lót CSS đơn giản:

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>

Giải pháp này không chỉ nhẹ, mà còn có nhiều ưu điểm:

  • Nó độc đáo sắp xếp trái dấu <ul> của dấu gạch đầu dòng vào văn bản đoạn bình thường xung quanh (= thụt lề <ul> bị loại bỏ).
  • Các khối văn bản trong các phần tử <li> vẫn được thụt lề chính xác nếu chúng bao quanh thành nhiều dòng.

Thông tin kế thừa:
Đối với phiên bản IE 8 trở xuống, bạn phải sử dụng lề trái thay thế:

    ul { margin-left: 1.2em; }

Tôi đã giải thích tất cả các vấn đề đã có trong bài đăng của tôi, @aioobe. Nhưng ở đây một lần nữa: Câu trả lời được chấp nhận (hiện tại, bởi vì sau khi đăng bài gốc của tôi, nó đã được chỉnh sửa nhiều lần để cải thiện nó) bây giờ vẫn duy trì các viên đạn (nếu bạn sử dụng ví dụ thứ hai được đưa ra), nhưng nó không được thụt vào chính xác bản văn. Đây là câu đố của ví dụ thứ hai về câu trả lời được chấp nhận, được sửa đổi để hiển thị hiệu ứng: jsfiddle.net/v6nyuq6f/88 Và đây là câu đố tương tự được sửa theo cách tiếp cận của tôi: jsfiddle.net/v6nyuq6f/89
Jpsy

Vì vậy, đó là năm 2016 và dựa vào một số giá trị "không hoàn hảo cho tất cả các trình duyệt" là giải pháp sạch nhất cho vấn đề khá phổ biến này. Có cách nào để có được chiều rộng chính xác của biểu tượng vật phẩm, có thể sử dụng các tính năng CSS3 không?
F30

Để an toàn:ul { padding-left:1.2em; margin-left: 0; }
Andrew Murphy

1
Chỉ có giải pháp trên trang này, hoạt động chính xác với các mục danh sách dài (bao quanh chính xác) - Cảm ơn!
FredyWenger

8

Thêm phần này vào CSS của bạn:

ul { list-style-position: inside; }

Điều này sẽ đặt các phần tử li trong cùng một thụt lề như các đoạn văn bản và văn bản khác.

Tham chiếu: http://www.w3schools.com/cssref/pr_list-style-poseition.asp


6
Trên <li> s có nhiều dòng văn bản, list-style-position: insidecăn chỉnh văn bản của dòng thứ hai và tất cả các dòng tiếp theo với dấu đầu dòng. Điều này chắc chắn là không mong muốn.
Jpsy

7

display:table-row; cũng sẽ thoát khỏi vết lõm nhưng sẽ loại bỏ đạn.



4

Bạn có thể cung cấp một liên kết ? cảm ơn tôi có thể xem qua Nhiều khả năng bộ chọn css của bạn không đủ mạnh hoặc bạn có thể thử

padding:0!important;


1
Không cần kích thước khi chỉ định 0.
raam86

11
!importantEVIL
Madbreaks

@Madbreaks Nó có thể hoạt động nếu bộ chọn là đúng và trường hợp sử dụng là đúng nhưng thăm dò bên phải của bạn không phải cái này, có thể trong trường hợp này có một quy tắc css chính cần được ghi đè bằng cách thay đổi tệp cơ sở, vì vậy nó để lại trong Tack như không hack lõi? Tôi không biết có lẽ tôi đã sai
naeluh

4

Tôi có cùng một vấn đề với chân trang tôi đang cố gắng phân chia. Tôi thấy rằng điều này làm việc cho tôi bằng cách thử một vài gợi ý ở trên:

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

Điều này dường như giữ nó ở bên trái dưới h1 của tôi và viên đạn chỉ bên trong div chứ không phải bên ngoài bên trái.


3

Bản demo trực tiếp: 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: "●";
}

Vì câu hỏi ban đầu không rõ ràng về các yêu cầu của nó, tôi đã cố gắng giải quyết vấn đề này trong các hướng dẫn được đặt ra bởi các câu trả lời khác. Đặc biệt:

  • Căn chỉnh danh sách đạn với văn bản đoạn bên ngoài
  • Căn chỉnh nhiều dòng trong cùng một mục danh sách

Tôi cũng muốn một giải pháp không dựa vào các trình duyệt đồng ý về việc sử dụng bao nhiêu phần đệm. Tôi đã thêm một danh sách theo thứ tự cho đầy đủ.


-1

Thực hiện nội tuyến này, tôi đặt lề là 0 (ul style = "lề: -0px"). Các viên đạn thẳng hàng với đoạn không có phần nhô ra.


Tôi không hiểu lý do tại sao bạn bị bỏ phiếu khác ngoài dấu hiệu tiêu cực trước số không. Tôi đã thử điều này trên Google Chrome và nó đã hoạt động, trong khi giải pháp padding-left: 0 thì không. Đây là trên Google Chrome Phiên bản 79.0.3945.88 WinX, 64 bit.
MrPotatoHead

Thêm vào nhận xét của tôi ở trên ... vì tôi không thể chỉnh sửa nó ... Tôi đã chơi với nó nhiều hơn một chút và trên Firefox mới nhất (71.0), hành vi này cũng tương tự. Tuy nhiên, đây là với danh sách không có thứ tự (ul). Khi sử dụng danh sách theo thứ tự (ol), 1.2em dường như căn chỉnh cạnh trái của danh sách với lề trái của văn bản khác (theo câu trả lời của Jpsy ở trên).
MrPotatoHead
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.