Làm thế nào để sử dụng biểu tượng đánh dấu / dấu kiểm (✓) thay vì dấu đầu dòng trong danh sách không có thứ tự?


82

Tôi có một danh sách mà tôi muốn thêm biểu tượng đánh dấu trước văn bản danh sách. Có CSS ​​nào có thể giúp tôi áp dụng cách này không?

this is my text
✓ this is my text
✓ this is my text
✓ this is my text
✓ this is my text
✓ this is my text

Lưu ý: Tôi muốn điều này trong loại mã HTML này

<ul>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
</ul>

Câu trả lời:


144

Bạn có thể sử dụng phần tử giả để chèn ký tự đó trước mỗi mục danh sách:

ul {
  list-style: none;
}

ul li:before {
  content: '✓';
}
<ul>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
</ul>


Tôi đã sử dụng cái này và nó hoạt động trong Chrome 65. Tôi có thể bao bọc từng <li> bình thường bằng cách sử dụng đường viền liền khối 1px, trôi sang trái và lề phải trên ul li: before - bạn có thể đặt màu viền cho nền của phần tử của bạn.
ymasood

Cảm ơn vì giải pháp! Tôi đã thêm một lưu ý rằng thụt lề bị mất khi gói. (Xin lỗi để chỉnh sửa bài viết, nhưng nó đã tốt hơn ở minh họa vấn đề hơn là chỉ để lại một bình luận, và hy vọng chúng ta có thể tìm ra cách để đối phó với điều đó.)
Dan Dascalescu

@Josh: Câu trả lời của Adam có giải pháp cho vấn đề bọc. Tôi đã chỉnh sửa nó cho rõ ràng, tùy thuộc vào bạn để bao gồm nó.
Dan Dascalescu

32

Dưới đây là ba kiểu dấu kiểm khác nhau mà bạn có thể sử dụng:

ul:first-child  li:before { content:"\2713\0020"; }  /* OR */
ul:nth-child(2) li:before { content:"\2714\0020"; }  /* OR */
ul:last-child   li:before { content:"\2611\0020"; }
ul { list-style-type: none; }
<ul>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
</ul>

<ul>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
</ul>

<ul><!-- not working on Stack snippet; check fiddle demo -->
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
</ul>

jsFiddle

Người giới thiệu:


Đây không khác gì câu trả lời của Josh Crozier, và cũng gặp phải vấn đề tương tự là hủy vết lõm trên bao bì . Ngoài ra, ký tự cuối cùng cũng không xuất hiện trong trò chơi trên Chromium / Ubuntu, nhưng dù sao thì đó cũng là vấn đề - câu trả lời của Josh là ý chính của giải pháp. Những ký tự dấu kiểm nào để sử dụng là một lựa chọn thiết kế.
Dan Dascalescu

1
@DanDascalescu, câu trả lời này mở rộng về giải pháp của Josh Crozier bằng cách cung cấp các tùy chọn dấu kiểm mà một số người có thể không biết. Đó là thông tin có giá trị. Thực tế là chúng là "lựa chọn thiết kế" không làm cho câu trả lời này kém hữu ích. Theo quan điểm của tôi, câu trả lời phản đối của bạn là không có cơ sở vì: (1) câu trả lời hữu ích cho nhiều người (và có gần 30 phiếu ủng hộ), (2) câu trả lời không giả vờ là bất cứ điều gì khác ngoài lựa chọn phong cách, và (3) Tôi đã không cố gắng để giải quyết bất kỳ vấn đề khác (trong đó, như bạn nói, là "bên cạnh những điểm nào")
Michael Benjamin

1
Các lựa chọn dấu kiểm mà tôi thấy, "\ 2713" và "\ 2714", là các điểm mã Unicode thô. Tôi không thể nhìn thấy chúng trông như thế nào. Nếu câu trả lời muốn cung cấp các lựa chọn về kiểu dáng, câu trả lời có thể bao gồm một số dấu kiểm thực tế: ✓, ✔, ✅, ✅. Dấu kiểm nào để sử dụng, không phải là một vấn đề thú vị. Cách sử dụng dấu kiểm là. Tôi thấy nó là "Làm cách nào để vẽ một chiếc thuyền hiện đang ở dưới nước", so với "Tôi có thể vẽ nó bằng màu xanh lam nào". Điều đó có ý nghĩa?
Dan Dascalescu

Bạn có quyền xem câu trả lời này từ bất kỳ góc độ nào bạn muốn. Tôi sẽ không tranh luận với ý kiến ​​của bạn. Tuy nhiên, thực tế là đại đa số những người truy cập bài đăng này đều thấy câu trả lời này hữu ích. Tôi sẽ chỉ để nó ở đó. Cảm ơn vì bạn đã phản hồi. @DanDascalescu
Michael Benjamin

2
Mọi người ủng hộ vì nhiều lý do khác nhau. Mọi người ủng hộ vì những lý do khác với lý do của bạn. Bạn không đồng ý với nội dung của câu trả lời này. Bạn không nói rằng câu trả lời là sai hoặc lỗi thời (như trong các liên kết bạn đã tham chiếu), bạn chỉ không thích nó. Điều đó tốt với tôi. Bạn có quyền cho ý kiến ​​của bạn.
Michael Benjamin

22

Như một phần bổ sung cho giải pháp:

ul li:before {
 content: '✓'; 
}

Bạn có thể sử dụng bất kỳ biểu tượng SVG nào làm nội dung , chẳng hạn như Font Aswesome .

nhập mô tả hình ảnh ở đây

ul {
  list-style: none;
  padding-left: 0;
}
li {
  position: relative;
  padding-left: 1.5em;  /* space to preserve indentation on wrap */
}
li:before {
  content: '';  /* placeholder for the SVG */
  position: absolute;
  left: 0;  /* place the SVG at the start of the padding */
  width: 1em;
  height: 1em;
  background: url("data:image/svg+xml;utf8,<?xml version='1.0' encoding='utf-8'?><svg width='18' height='18' viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg'><path d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/></svg>") no-repeat;
}
<ul>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>This is my text, it's pretty long so it needs to wrap. Note that wrapping preserves the indentation that bullets had!</li>
  <li>this is my text</li>
  <li>this is my text</li>
</ul>

Lưu ý: Để giải quyết vấn đề gói mà các câu trả lời khác có:

  • chúng tôi dành 1,5 triệu ems không gian ở bên trái của mỗi <li>
  • sau đó định vị SVG ở đầu khoảng trắng đó ( position: absolute; left: 0)

Đây là các biểu tượng màu đen khác của Font Awesome .

Kiểm tra CODEPEN này để xem cách bạn có thể thêm màu và thay đổi kích thước của chúng.


6
<ul>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
  <li>this is my text</li>
</ul>

bạn có thể sử dụng phong cách css đơn giản này

ul {
     list-style-type: '\2713';
   }

Câu trả lời của Adam đề cập đến vấn đề đóng gói, nhưng phải mất hàng tấn mã bổ sung ... điều này mới hoạt động. Khoảng cách là một điểm nhấn đối với tôi, vì vậy tôi chỉ cần thêm một \ 1 \ 1 bổ sung vào cuối khoảng cách để tạo khoảng trống cho dấu kiểm khỏi <li>.
Jaden Baptista
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.