2012-06-14 39 views
5

Tôi có một danh sách có thứ mà tôi đã theo kiểu theo hai cách:Áp dụng CSS cho danh sách được sắp xếp - màu nền theo số?

  1. Màu số cách khác nhau để các văn bản danh sách
  2. Áp dụng một màu nền và biên giới để mỗi mục

See the list on the right hand side of this page

Các số được tạo màu cam bằng cách áp dụng kiểu màu cam trước tiên cho <li>, sau đó áp dụng kiểu màu đen cho văn bản danh sách chỉ sử dụng jQuery:

jQuery('#secondary ol li').wrapInner('<span class="notes"> </span>');

Tôi chỉ muốn sử dụng CSS, nhưng hey.

Vì vậy, vấn đề còn lại là cách mở rộng màu nền/đường viền dưới các số.

Cảm ơn bạn đã xem câu hỏi của tôi!

+0

* Bạn muốn tạo kiểu gì? – poepje

+0

Xin lỗi, điều đó không rõ ràng! Các số trong danh sách ở phía bên tay phải. Sẽ chỉnh sửa câu hỏi của tôi. Cảm ơn. –

Trả lời

8

trả lời Revised:jsFiddle Pure CSS Solution

Dưới đây là một phương pháp điều chỉnh mà không sử dụng khuôn khổ jQuery ban đầu của OP, một yêu cầu đó không phải là đã hoàn thành trong câu trả lời trước của tôi. Phương thức đó đã sử dụng jQuery hiện có để áp dụng một trình bao bọc span cho phần tử li vì sửa đổi HTML trực tiếp là không thể.

phương pháp mới này sử dụng CSS Pseudo selectors :before:after cùng với CSS 2.1 counter chức năng có thể có nó là danh sách số cách điệu để không wrapper jQuery là cần thiết. Trong thực tế, bản sửa đổi jsFiddle hiển thị các số sử dụng phông chữ phông chữ Google @.

enter image description here

Sử dụng chức năng CSS truy cập được thực hiện bằng cách tuyên bố một tên biến để sử dụng trong các yếu tố ul, sau đó incrementing quầy trong các yếu tố :before cũng như sử dụng nó như là nội dung thực tế.

Ví dụ đơn giản:jsFiddle CSS Counter

enter image description here

HTML:

<ul> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li>  
    <li>A numbered list that's stylized!</li>  
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li> 
    <li>A numbered list that's stylized!</li>  
</ul> 

CSS:

ul{ 
    list-style-type: none; 
    white-space: nowrap; 
    margin: 0; 
    padding: 0; 
    width: 210px; 
    height: 200px; 
    overflow: auto; 
    border: 3px solid royalblue; 
    /* Setup the counter. */ 
    counter-reset: yourVariableName; 
} 
li:before{ 
    /* Advance the number. */ 
    counter-increment: yourVariableName; 
    /* Use the counter number as content. */ 
    content: 'Item ' counter(yourVariableName) ': '; 
    color: royalBlue; 
    font-family: 'Impact'; 
} 

Tìm hiểu thêm về bộ đếm CSS HERE.


Câu trả lời ban đầu của tôi sử dụng khung hiện có trong câu hỏi của OP được hiển thị bên dưới.


Tôi đã xem kỹ câu hỏi của bạn và sau đó xem trang web của bạn.

Dưới đây là giải pháp cần thiết: jsFiddle

Để tóm tắt, đây là các quy tắc CSS thay thế mà làm cho nó hoạt động:

#secondary ol { 
    color:#F60; 
    margin-bottom:0; 
    margin-left: 0px; /* Since 'ul,ol{}' setting in line 108 affects this selector, 'margin-left' is redefined. */ 
    list-style-position: inside; /* This will place the number on top and inside of the current color of li */ 
} 

.notes{ 
    color:#333; 
    width: 230px; 
    heigh: 50px; 
    display: inline-block; 
    vertical-align:text-top; 
} 

Kết quả:
enter image description here


Extra: dụ Phiên bản này nhấn mạnh những con số: jsFiddle

+0

Cảm ơn bạn arttronics! Tôi đã từ bỏ rất nhiều về điều này! –

2

thật dễ dàng để đạt được chỉ với css:

#secondary ol { 
color: <orange>; 
} 

#secondary li { 
color: <black>; 
} 

thay thế placeholders với mã màu đúng!

bạn có thể phải fiddle với nó tùy thuộc vào css của bạn, nhưng nguyên tắc là:

  • áp dụng các màu sắc mà bạn muốn "số" xuất hiện như thế nào, đến <ol>
  • áp dụng màu chữ các thẻ <li>

cho phần còn lại của câu hỏi, quấn <ol> vào div vùng chứa và áp dụng nền mong muốn cho nó.

+0

"Vì vậy, vấn đề còn lại là làm thế nào để mở rộng màu nền/biên giới theo các con số quá." Bạn dường như đã hiểu sai câu hỏi. – BoltClock

+0

Cảm ơn luca, nhưng thay đổi số thành màu đen (tôi đang sử dụng FF nếu điều đó tạo nên sự khác biệt). Tôi quản lý để có được xung quanh này bằng cách sử dụng jQuery như trong câu hỏi của tôi ở trên, vì vậy bây giờ tập trung của tôi là nhận được màu nền để mở rộng theo các số ... –

+0

xấu của tôi, tôi đã sửa đổi câu trả lời của tôi để giải quyết các câu hỏi – Luca

0

Đối với câu hỏi # 1: Có vẻ như bạn đã tô màu chúng khác nhau? (Tôi có thể chỉnh sửa câu trả lời này nếu bạn vẫn cần những giải pháp)

Đối với # 2:

ul#idname li { 
    background:#ddd;/*whatever colour*/ 
} 

nơi idname là id đó <ul>

+0

cũng có, nếu bạn muốn mở rộng/giảm kích thước của nền màu, chỉnh sửa phần đệm. – poepje

+0

Cảm ơn mọi người, tôi nhận ra câu hỏi của tôi là gây hiểu nhầm. Tôi đã quản lý để tô màu các con số bằng cách sử dụng jQuery (đã thử CSS của bạn nhưng không hoạt động), vì vậy bây giờ tập trung của tôi là nhận được màu nền để mở rộng theo các con số. –

+0

sử dụng 'padding-bottom' – poepje

2

Đối với câu hỏi thứ hai của bạn, một khả năng sẽ là để thay đổi list-style-position để bên cho li thẻ của bạn:

li { list-style-position: inside; } 

này sẽ di chuyển nội tuyến số với t ông còn lại của văn bản và cho phép bạn phong cách tất cả cùng nhau. Tuy nhiên, điều này sẽ ngăn văn bản căn chỉnh riêng biệt.

Đối với câu hỏi đầu tiên của bạn, nó có thể tạo kiểu cho số riêng về mặt lý thuyết bằng cách sử dụng giả yếu tố như vậy:

li::marker { color: orange; } 

Tuy nhiên, tôi nghĩ rằng đây là hiện không được hỗ trợ trong bất kỳ trình duyệt.Bạn có thể sử dụng mozilla cụ thể ::-moz-list-number nhưng điều đó rõ ràng sẽ không hoạt động trong các trình duyệt khác.

Bạn có thể xem tất cả các bit trong ví dụ của tôi ở đây: http://jsfiddle.net/XmtxL/

+1

Cảm ơn John. Có, 'list-style-position: inside' sẽ di chuyển các số sang bên trong nền/đường viền, mặc dù tôi đã hy vọng giữ cho văn bản danh sách được căn chỉnh như một khối. Hmmmm ... –

0

Đối với những người, những người cần chỉ là một hình nền như tôi làm ở đó là một giải pháp css chỉ cho việc này:

ol 
    margin: 0 
    padding: 0 
    margin-left: 30px 
    position: relative 
    z-index: 2 
    > li 
     padding-left: 16px 
     margin-bottom: 20px 
     font-style: normal 
     font-weight: 700 
     position: relative 
     z-index: initial 
     &:before 
     position: absolute 
     content: url(../images/ol-li-1.png) 
     top: -8px 
     left: -34px 
     z-index: -1 

See codepen

Các vấn đề liên quan