CSS에서 정규 표현식을 사용합니까?


127

s1 , s2 등 의 형식의 ID 가있는 div가있는 html 페이지가 있습니다 .

<div id="sections">
   <div id="s1">...</div>
   <div id="s2">...</div>
   ...
</div>

이 섹션 / div의 하위 집합에 css 속성을 적용하고 싶습니다 (id에 따라 다름). 그러나 div를 추가 할 때마다 이와 같이 섹션에 대한 CSS를 별도로 추가해야합니다.

//css
#s1{
...
}

나는 세트에 스타일을 적용하는 데 사용할 수있는 CSS를 정규 표현식 같은 뭔가가 div의는 .


9
당신은 아마 사용해야 class하는 ID를 가진 요소의 클래스를 식별하는 속성을
LeeGee

답변:


191

이전 답변에서 볼 수 있듯이 정규식 형식없이 해당 요소를 선택하는 것을 관리 할 수 ​​있지만 질문에 직접 대답하려면 선택기에서 정규식 형식을 사용할 수 있습니다.

#sections div[id^='s'] {
    color: red;  
}

즉, 문자 's'로 시작하는 ID가있는 #sections div 내의 모든 div 요소를 선택합니다.

여기에서 바이올린을 참조 하십시오 .

W3 CSS 선택기 문서는 여기에 있습니다 .


1
이것은 CSS 2.1에 대한 권장 사항입니다. IE 7, Opera 9 등에서 지원됩니다. 출처 : developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
Mike S

2
오늘은 진짜 너 덕분이다. 사용자가 구성 할 수 있도록 크롤러에 고급 CSS 선택기를 포함하려고했습니다. ^ =는 f ****** 사막의 물과 같았습니다.
DGoiko 19

60

이 답변의 보완으로 $최종 일치 *를 얻고 값 이름의 어느 곳에서나 일치를 얻는 데 사용할 수 있습니다 .

일치 어디서나 : .col-md, .left-col, .col, .tricolor, 등

[class*="col"]

처음에 일치 : .col-md, .col-sm-6, 등

[class^="col-"]

결말에서 찾습니다 : .left-col, .right-col, 등

[class$="-col"]

(나는 이것이 미친 것처럼 들리지만) 매 경기마다 "파괴"를 할 수 있습니까?
Walter

24

ID는 요소를 고유하게 식별하기위한 것 입니다. 적용된 모든 스타일은 해당 요소에 고유해야합니다. 많은 요소 에 적용하려는 스타일이있는 경우 ID 선택자에 의존하지 말고 모든 요소에 클래스를 추가해야합니다.

<div id="sections">
   <div id="s1" class="sec">...</div>
   <div id="s2" class="sec">...</div>
   ...
</div>

.sec {
    ...
}

또는 특정 경우에 다른 것이 없으면 부모 컨테이너 내부의 모든 부서를 선택할 수 있습니다.

#sections > div {
    ...
}

10

우선, HTML 문서 내에서 항목을 일치시키는 방법에는 여러 가지가 있습니다. 이 참조로 시작하여 요소에 스타일 규칙을 적용하는 데 사용할 수있는 사용 가능한 선택기 / 패턴을 확인하십시오.

http://www.w3.org/TR/selectors/

경기 div의 직접적인 후손들 #main.

#main > div

div직간접 후손 인 모든를 찾습니다 #main.

#main div

div의 직계 자손 인 첫 번째 항목 과 일치합니다 #sections.

#main > div:first-child

div특정 속성과 일치 합니다.

#main > div[foo="bar"]

5

다음과 같이 각 DIV에 클래스를 추가하고 규칙을 클래스에 적용 할 수 있습니다.

HTML :

<div class="myclass" id="s1">...</div>
<div class="myclass" id="s2">...</div>

CSS :

//css
.myclass
{
   ...
}

3
또한 일반적으로 ID 선택기로 스타일을 지정하지 않으려 고합니다. 그것은 내 경험에서 도움이되는 것보다 일반적으로 더 많은 상처를 입히는 특이성을 조정하기가 더 어렵습니다. 나는 ID를 사용합니다 ... CSS를 적용하는 것이 아닙니다.
prodigitalson

나는 나중에 스타일을 재정의하기 위해 (특정 페이지에 대해 말할 수 있음) 결국 동일한 선택기 + 더 많은 것을 만들기 위해 사용할 수있는 다른 것을 사용해야하기 때문에 id 선택기를 사용하지 않으려 고 노력한다고 jsut 말했었습니다. 원래 선택자보다 구체적입니다. 나쁘지는 .thepage #someid않지만 고급 테이블 또는 목록 스타일링에 정말 오래 걸릴 수 있습니다. 귀하의 답변에 대한 일반적인 조언이 확대 되었기 때문에 귀하의 답변에 대한 비판이
아니 었습니다.

0

*원하는 문자를 포함하는 모든 문자열을 얻고 싶을 때 일반적으로 사용 합니다.

* 정규식에서 사용되며 모든 문자를 대체합니다.

SASS 또는 CSS에서 사용되는 것은 [id*="s"]ID가 "s ......"인 모든 DOM 요소를 가져옵니다.

/* add red color to all div with id s .... elements */

div[id^="s"] {
    color: red;
}

-4

내 일반 CSS 정규식을 사용해보십시오

(([a-z]{5,6}.*?\))|([\d.+-]?)(?![a-z\s#.()%])(\d?\.?\d?)?[a-z\d%]+)|(url\([/"'][a-z:/.]*['")]\))|(rgb|hsl)a?\(\d+%?,?\s?\d+%?,?\s?\d+%?(,\s?\d+\.?\d?)?\)|(#(\w|[\d]){3,8})|([\w]{3,8}(?=.*-))

데모 https://regexr.com/4a22i


-11

CSS에서 특정 요소를 선택하는 또 다른 간단한 방법이 있습니다.

#s1, #s2, #s3 {
    // set css attributes here
}

선택할 수있는 요소가 몇 개 밖에없고 클래스에 신경 쓰지 않으려면이 방법도 쉽게 작동합니다.


3
@AustinHenley Bcoz 이것은 해결책이 아닙니다. 질문에서 언급했듯이 매번 CSS 규칙을 편집하고 싶지 않습니다.
Ankit 2012

이것은 찬성 할 가치가 없습니다. 예를 들어 최대 10 개의 div가 있다는 것을 알고 있다면 # s1에서 # s10까지 입력 할 수 있으며 선택기를 건드릴 필요가 없습니다. 이를 수행하는 올바른 방법은 클래스를 사용하는 것이지만이 솔루션은 가정을 취하고 솔루션을 시도합니다.
jcuenod 2015

4
이것이 주어진 상황에 대해 가능한 해결 방법인지 여부는 실제로 중요하지 않습니다. 가장 기본적인 CSS 지식을 가진 사람은 여러 선택기 또는 클래스를 사용하는 방법을 알고 있기 때문에이 대답은 질문에 전혀 대답하지 않습니다.
Jayant Bhawal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.