Kiểu danh sách mặc định (CSS) là gì?


90

Trên trang web của tôi, tôi sử dụng reset.css. Nó thêm chính xác điều này vào các kiểu danh sách:

ol, ul {
    list-style: none outside none;
}
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
    background: none repeat scroll 0 0 transparent;
    border: 0 none;
    font-size: 100%;
    margin: 0;
    outline: 0 none;
    padding: 0;
    vertical-align: baseline;
}

Vấn đề là tất cả các kiểu danh sách được đặt thành NONEnày. Tôi muốn hoàn nguyên kiểu danh sách ban đầu (mặc định) cho tất cả các danh sách chỉ trên các trang con của trang web (tất cả các danh sách trong .my_container).

Khi tôi cố gắng thiết lập những thứ như list-style-typeđể inheritlà không kế thừa kiểu mặc định của trình duyệt chỉ dành riêng cho thuộc tính CSS này.

Có cách nào để kế thừa phong cách của trình duyệt gốc cho một số thuộc tính nhất định mà không cần sửa đổi reset.css không?


4
reset.css là một trong những kiểu chống lại tồi tệ nhất trong thiết kế web.
ᆼ ᆺ ᆼ

9
Thay vì một biểu định kiểu đặt lại đầy đủ, hãy xem xét một cái gì đó như github.com/necolas/normalize.css đặt giá trị mặc định hợp lý cho tất cả các phần tử. Bằng cách đó, bạn bắt đầu với một đường cơ sở trên tất cả các trình duyệt và có thể xây dựng từ đó. Ngoài ra, bạn không phải thêm mã bổ sung để quay lại cài đặt mặc định!
Olly Hodgson,

1
@OllyHodgson Có, nhưng tôi có lý do cụ thể tại sao tôi muốn sử dụng reset.css. Tôi cần phải thực sự rõ ràng càng nhiều phong cách càng tốt và tôi muốn viết lại nó - không phải là cách khác xung quanh :)
Atadj

1
Nếu bạn muốn xóa chúng và viết lại chúng, thì câu hỏi này có ích lợi gì? Theo như tôi thấy, bạn có hai tùy chọn: 1) đặc biệt tránh đặt lại kiểu danh sách để bạn giữ nguyên giá trị mặc định 2) đặt lại chúng và đưa ra kiểu danh sách của riêng bạn.
BoltClock

1
@BoltClock - Chỉ cần làm rõ - Tôi muốn cho người dùng cơ hội tạo danh sách của riêng họ từ đầu (tôi đã thêm lớp cho từng kiểu có thể) - Tôi chỉ tự hỏi liệu có cái gì đó giống như cài đặt "mặc định" nhưng vì không có bất kỳ kiểu mặc định - tôi sẽ chỉ tạo một kiểu.
Atadj

Câu trả lời:


148

Tôi đã sử dụng để đặt CSS này để xóa thiết lập lại:

ul { 
   list-style-type: disc; 
   list-style-position: inside; 
}
ol { 
   list-style-type: decimal; 
   list-style-position: inside; 
}
ul ul, ol ul { 
   list-style-type: circle; 
   list-style-position: inside; 
   margin-left: 15px; 
}
ol ol, ul ol { 
   list-style-type: lower-latin; 
   list-style-position: inside; 
   margin-left: 15px; 
}

CHỈNH SỬA: với một lớp cụ thể của khóa học ...


Cho đến nay nó hoạt động như vậy :) Tôi nghĩ rằng điều này giải quyết được câu hỏi của tôi. Tôi sẽ kiểm tra nó bây giờ nhiều hơn với danh sách lồng nhau, vv
Atadj

5
Nó không "hoàn nguyên các kiểu danh sách ban đầu (mặc định)". Nó chỉ thiết lập một số phong cách.
Jukka K. Korpela,

Tôi đồng ý, nhưng dù theo cách nào đi nữa, mục tiêu chỉ là thiết lập một số phong cách. CSS này cung cấp một phong cách khá cơ bản cho danh sách, không hơn.
zessx,

2
Không có tùy chọn "mặc định" cho kiểu kiểu danh sách và tôi phát hiện ra điều đó sau khi nhận được câu trả lời. Trình duyệt chỉ thêm một số kiểu thường không nhất quán giữa các trình duyệt.
Atadj

1
Tôi cũng có ai đó đặt hiển thị: inline-block; và có vẻ như nó cần phải là list-item để các dấu đầu dòng hiển thị trở lại.
Đánh dấu

32

Tôi nghĩ đây thực sự là những gì bạn đang tìm kiếm:

.my_container ul
{
    list-style: initial;
    margin: initial;
    padding: 0 0 0 40px;
}

.my_container li
{
    display: list-item;
}

Vâng, tôi nghĩ rằng câu trả lời này cũng quan trọng. inheritkế thừa các kiểu từ các vùng chứa mẹ và nó không đặt chúng thành các giá trị trình duyệt mặc định. initialđiều này xảy ra (sau này tôi mới biết về sự tồn tại của nó) nhưng bạn có chắc chắn điều đó ul { list-style: initial; }ol { list-style: initial; }sẽ tạo ra một kết quả hợp lệ không? Nó không được đặt thành list-stylegiá trị ban đầu bất kể nó được áp dụng cho phần tử nào? initialGiá trị sẽ không được disc outside nonecho cả hai loại danh sách?
Atadj

1
Thật tuyệt vời, initialchưa bao giờ xảy ra với tôi!
BenjaminRH

8
initialkhông được hỗ trợ trong bất kỳ phiên bản nào của IE msdn.microsoft.com/en-us/library/…
lulalala

12

Theo tài liệu, hầu hết các trình duyệt sẽ hiển thị <ul>, <ol><li>các yếu tố với các giá trị mặc định sau đây:

Cài đặt CSS mặc định cho thẻ UL hoặc OL :

ul, ol { 
    display: block;
    list-style: disc outside none;
    margin: 1em 0;
    padding: 0 0 0 40px;
}
ol { 
    list-style-type: decimal;
}

Cài đặt CSS mặc định cho thẻ LI :

li { 
    display: list-item;
}

Tạo kiểu cho các mục danh sách lồng nhau:

ul ul, ol ul {
    list-style-type: circle;
    margin-left: 15px; 
}
ol ol, ul ol { 
    list-style-type: lower-latin;
    margin-left: 15px; 
}

Lưu ý: Kết quả sẽ hoàn hảo nếu chúng ta sử dụng các kiểu trên với một lớp. Cũng xem các điểm đánh dấu Danh sách-Mục khác nhau .


Nếu đúng như vậy, thì danh sách lồng nhau sẽ có thêm lề trên và dưới với bất kỳ cấp độ mới nào.
VorganHaze

10

http://www.w3schools.com/tags/tag_ul.asp

ul { 
    display: block;
    list-style-type: disc;
    margin-top: 1em;
    margin-bottom: 1em;
    margin-left: 0;
    margin-right: 0;
    padding-left: 40px;
}

1
cảm ơn đã cứu mạng tôi, tôi đang tự hỏi tại sao lại có phần đệm trong menu con của tôi.
Asura

Thao tác này sẽ thêm vertical.margij vào bất kỳ danh sách lồng nhau nào.
VorganHaze

4

Bạn không thể. Bất cứ khi nào có bất kỳ biểu định kiểu nào được áp dụng chỉ định một thuộc tính cho một phần tử, không có cách nào để truy cập mặc định của trình duyệt, đối với bất kỳ trường hợp nào của phần tử.

Ý tưởng (có thể tranh chấp) của reset.css là loại bỏ các mặc định của trình duyệt, để bạn có thể bắt đầu tạo kiểu của riêng mình từ một bàn làm việc sạch sẽ. Không có phiên bản nào của reset.css làm được điều đó hoàn toàn, nhưng trong phạm vi của họ, tác giả sử dụng reset.css được cho là xác định hoàn toàn kết xuất.


2

Bạn đang đặt lại lề trên tất cả các phần tử trong khối css thứ hai. Lề mặc định là 40px - điều này sẽ giải quyết vấn đề:

.my_container ul {list-style:disc outside none; margin-left:40px;}

1

Một câu trả lời cho tương lai: CSS 4 có thể sẽ chứa từ khóa hoàn nguyên, từ khóa này sẽ hoàn nguyên một thuộc tính về giá trị của nó từ biểu định kiểu người dùng hoặc tác nhân người dùng [ nguồn ]. Khi viết bài này, chỉ có Safari hỗ trợ điều này - hãy kiểm tra tại đây để biết các bản cập nhật về hỗ trợ trình duyệt.

Trong trường hợp của bạn, bạn sẽ sử dụng:

.my_container ol, .my_container ul {
    list-style: revert;
}

Xem thêm câu trả lời khác này với một số chi tiết hơn.

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.