2012-08-16 3 views
0

막 대형 차트의 스타일을 지정 중입니다. 이 무제한 바는 잠재적이고 나는 현재 내가 좋아하는 뭔가가 그들 각각의 부모 컨테이너 -에 비례 폭이 필요합니다 : 나는 각 막대에 추가 할 수% 열 수에 따른 백분율의 나누기

.one-column { 
    width: (100%/1); 
} 

.two-columns { 
    width: (100%/2); 
} 

.three-columns { 
    width: (100%/3); 
} 

etc 

을 ....

누구나이 문제를 해결하고 무제한 열을 처리 할 수있는 하나의 규칙을 가질 수있는 영리한 방법을 생각해 낼 수 있습니까? 데이터 속성과 관련이있을 수 있습니까?

답변

0

:

div:first-child:last-child { 
width: 100%; 
} 
div:first-child:nth-last-child(2), div:last-child:nth-first-child(2) { 
width: 50%; 
} 
div:first-child:nth-last-child(3), div:first-child:nth-last-child(3) ~ div { 
width: 33.33%; 
} 
div:first-child:nth-last-child(4), div:first-child:nth-last-child(4) ~ div { 
width: 25%; 
} 

당신이 볼 수 있듯이, 당신은 여전히 ​​추가해야합니다 가능한 모든 div 수에 대한 규칙이지만, 더 많은 div가 있는지 여부를 더 이상 감지하고 그에 따라 클래스를 설정할 필요가 없습니다.

하지만 또 다른 가능한 해결책이 있습니다. div32 및 부모 요소에 display: table, display: table-cell 등을 적절하게 사용할 수 있습니다. 그런 다음 상위 항목의 너비를 100%으로 설정하고 컨테이너 너비를 모두 같은 값 (예 : 1%)으로 설정하면 원하는 내용을 정확하게 얻을 수 있습니다.

+0

응답 해 주셔서 감사합니다. 나는 그것이 현재 가지고있는 것보다 더 유용하다는 것을 정말로 보지 못합니다. 또한 디스플레이를 얻을 수없는 것 : 테이블 방법 중 하나를 작동하도록, 내가 뭔가를 놓친 건가요? http://jsfiddle.net/c4BZT/ –

+0

나는 당신의 바이올린을 시험해 보았지만 나에게 그것은 효과적이다. 어떤 브라우저를 사용합니까? –

+0

내 브라우저가 크롬입니다 –

0

LessCSS을보세요. 수학 연산을 지원합니다. 그렇지 않으면 Javascript를 사용하여 막대의 스타일링을 처리하는 것이 좋습니다. 아마도 Raphael과 같은 그래프 라이브러리를 사용 하시겠습니까? 당신이 그 스타일에 의존하고를 사용 컨테이너의 폭이 얼마나 많은 열을 찾을 수 CSS3 셀렉터의 일부 까다로운 조합

+0

옙. scss는 수학 연산도 지원합니다.하지만 sass와 less는 전 처리기이므로 데이터 열 (예 :)의 값을 얻기 전에 계산을 수행하므로 작동하지 않습니다. 나는 css/scss 전용 솔루션을 찾고있다. –

+0

죄송합니다. scss를 사용하고 계시지 않습니다. 아직도, 나는 당신이 이것을 위해 자바 스크립트를 사용할 것을 강력하게 제안한다. – o01

관련 문제