목록에있는 총알의 색상을 변경하는 방법이 있는지 궁금합니다.
다음과 같은 목록이 있습니다.
<ul>
<li>House</li>
<li>Car</li>
<li>Garden</li>
</ul>
내가 ‘span’og a ‘p’와 같은 li ‘s에 아무것도 삽입 할 수 없습니다. 글 머리 기호의 색상을 변경할 수 있지만 텍스트를 현명하게 변경할 수 있습니까?
답변
이미지를 사용할 수 있으면 이렇게 할 수 있습니다. 이미지가 없으면 글 머리 기호의 색상 만 변경할 수없고 텍스트는 변경할 수 없습니다.
이미지 사용
li { list-style-image: url(images/yourimage.jpg); }
보다
이미지를 사용하지 않고
그런 다음 HTML 마크 업을 편집하고 목록 안에 범위를 포함하고 다른 색상으로 li 및 범위에 색상을 지정해야합니다.
답변
마크 업을 추가하지 않고 관리했지만 대신 li:before
. 이것은 분명히 :before
(이전 IE 지원 없음) 의 모든 한계를 가지고 있지만 매우 제한된 테스트 후에 IE8, Firefox 및 Chrome에서 작동하는 것 같습니다. 글 머리 기호 스타일은 또한 유니 코드에있는 항목에 의해 제한됩니다.
li {
list-style: none;
}
li:before {
/* For a round bullet */
content: '\2022';
/* For a square bullet */
/*content:'\25A0';*/
display: block;
position: relative;
max-width: 0;
max-height: 0;
left: -10px;
top: 0;
color: green;
font-size: 20px;
}
<ul>
<li>foo</li>
<li>bar</li>
</ul>
답변
s list-style-image
와 결합 svg
할 수 있습니다 . CSS로 인라인 할 수 있습니다. ! 이 방법은 무엇이든 될 수있는 “총알”에 대한 놀라운 제어를 제공합니다.
빨간색 원을 얻으려면 다음 css를 사용하십시오.
ul {
list-style-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" width="10" height="10"><circle fill="red" cx="5" cy="5" r="2"/></svg>');
}
그러나 이것은 시작에 불과합니다. 이것은 우리가 그 총알로 우리가 원하는 미친 일을 할 수있게합니다. 원이나 직사각형은 쉽지만 그릴 수있는 것은 무엇이든 svg
붙일 수 있습니다! 아래 불즈 아이 예를 확인하세요.
너비 / 높이 속성
일부 브라우저는에 width
및 height
속성을 설정해야합니다 <svg>
. 그렇지 않으면 아무것도 표시하지 않습니다. 글을 쓰는 시점에서 최신 버전의 Firefox는이 문제를 나타냅니다. 예제에서 두 속성을 모두 설정했습니다.
인코딩
최근 댓글에서 data-uri에 대한 인코딩이 생각났습니다. 이것은 최근 저에게 고통스러운 점이었고 제가 조사한 정보를 약간 공유 할 수 있습니다.
데이터 URI 스펙 되는 참조 1, URI 사양은 상기 SVG는에 따라 인코딩되어야한다고 말한다 URI 사양 . 즉, 모든 종류의 문자를 인코딩해야합니다 (예 <
🙂 %3C
.
일부 소스에서는 인코딩 문제를 해결해야하는 base64 인코딩을 제안하지만 SVG의 크기를 불필요하게 늘리는 반면 URI 인코딩은 그렇지 않습니다. URI 인코딩을 권장합니다.
더 많은 정보:
답변
@Marc의 솔루션 구축-글 머리 기호 문자는 다른 글꼴과 브라우저에서 다르게 렌더링되기 때문에 테두리 반경과 함께 다음 css3 기술을 사용하여 더 많은 제어 권한을 가진 글 머리 기호를 만들었습니다.
li:before {
content: '';
background-color: #898989;
display: inline-block;
position: relative;
height: 12px;
width: 12px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
-moz-background-clip: padding;
-webkit-background-clip: padding-box;
background-clip: padding-box;
margin-right: 4px;
top: 2px;
}
답변
나는 이것이 정말, 정말, 오래된 질문이라는 것을 알고 있지만 나는 이것을 가지고 놀았고 내가 게시하지 않은 방법을 생각해 냈습니다. 목록에 색상을 지정한 다음 ::first-line
선택기를 사용하여 텍스트 색상을 덮어 씁니다 . 저는 전문가가 아니기 때문에 제가 놓치고있는이 접근 방식에 문제가있을 수 있지만 작동하는 것 같습니다.
li {
color: blue;
}
li::first-line {
color: black;
}
<ul>
<li>House</li>
<li>Car</li>
<li>Garden</li>
</ul>
답변
@Marc 및 @jessica 솔루션 구축-이것이 제가 사용하는 솔루션입니다.
li {
position:relative;
}
li:before {
content:'';
display: block;
position: absolute;
width: 6px;
height:6px;
border-radius:6px;
left: -20px;
top: .5em;
background-color: #000;
}
나는 em
글꼴 크기에 사용하므로 top
값을 설정 .5em
하면 항상 첫 번째 텍스트 줄의 중간 지점에 배치됩니다. left:-20px
브라우저에서 글 머리 기호의 기본 위치이기 때문에 사용했습니다 . padding/2
답변
나는 Marc의 대답도 정말 좋아했습니다. 다른 색상의 UL 세트가 필요했으며 분명히 클래스를 사용하는 것이 더 쉬울 것입니다. 예를 들어 다음은 주황색에 사용한 것입니다.
ul.orange {
list-style: none;
padding: 0px;
}
ul.orange > li:before {
content: '\25CF ';
font-size: 15px;
color: #F00;
margin-right: 10px;
padding: 0px;
line-height: 15px;
}
또한 “content :”에 사용한 16 진수 코드가 Marc의 코드와 다르다는 것을 발견했습니다 (16 진수 원이 너무 높게 위치하는 것 같음). 내가 사용한 것은 중간에 완벽하게 앉아있는 것 같습니다. 여기에서 여러 다른 모양 (사각형, 삼각형, 원 등)도 발견 했습니다.
