2016-08-30 3 views
4

CSS3를 사용하여 목록 항목의 순서를 변경할 수 있습니까?CSS3를 사용하여 목록 항목의 순서를 변경할 수 있습니까?

예를 들어 목록이 1,2,3,4,5 순으로 HTML로 코딩되었지만 5,1,2,3,4 순서로 표시되도록합니다.

Firefox 확장을 수정하기 위해 CSS 오버레이를 사용하고 있으므로 HTML 만 변경할 수 없습니다.

HTML 코드

<ul> 
 
<li>1</li> 
 
<li>2</li> 
 
<li>3</li> 
 
<li>4</li> 
 
<li>5</li> 
 
</ul>

+1

'주문'소품이있는 CSS로 할 수 있습니다 아래의 솔루션과 같이 erty를 사용하지만, 개인적으로 주문을 변경하거나 애니메이션을 적용 할 수 없기 때문에 개인적으로 선호하지 않습니다. – Noitidart

+1

@Noitidart 먼저 코드를 좋아합니다. 너의 큰 팬. 항상 감명 받았다. :-) 둘째로, 당신은 무엇을 추천합니까? – RockPaperLizard

+0

고마워요 @RockPaperLizard! 그 메모 정말 고맙습니다! 나는 반응을 사용하므로 몇 분 안에 손을 뗄 수 있지만 Ui/구성 요소 키트가 없으면 시간이 좀 더 걸릴 수 있습니다. 블록 레벨 요소와'transformY'를 사용합니다. perf에 대한 변형을 수정하는 것은 다시 그리기를 발생시키지 않는다는 점에서 좋습니다. – Noitidart

답변

11

당신은 인 flexbox를 사용 할 수 있습니다.

여기 당신을 위해 만든 바이올린는 다음과 같습니다 https://jsfiddle.net/x56hayht/

ul { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
ul li:first-child { 
 
    order: 5; 
 
} 
 
ul li:nth-child(2) { 
 
    order: 4; 
 
} 
 
ul li:nth-child(3) { 
 
    order: 3; 
 
} 
 
ul li:nth-child(4) { 
 
    order: 2; 
 
}
<ul> 
 
    <li>1</li> 
 
    <li>2</li> 
 
    <li>3</li> 
 
    <li>4</li> 
 
    <li>5</li> 
 
</ul>

csstricks에 따르면

순서 속성은 유연한 상자 레이아웃 모듈의 하위 속성입니다.

플렉스 항목은 기본적으로 소스 문서에 나타나는 순서대로 표시됩니다.

이 주문을 변경하는 데 order 속성을 사용할 수 있습니다.

구문 :

순서 :

number 그것이 도움이되기를 바랍니다. 건배!

+0

좋은 답변입니다. 고맙습니다! 레오의 대답은 대신'flex-flow : wrap'을 사용합니다. 대신'flex-direction : column'을 선택했습니다. 어느 것이 더 나은 선택인가? 아니면 다른 질문으로 더 좋습니까? – RockPaperLizard

+0

기본적으로 플렉스 흐름은 플렉스 방향보다는 플렉스 방향을 선택했기 때문에 플렉스 방향보다는 플렉스 방향을 선택했습니다. 내가 틀리지 않으면.나는 당신의 필요에 기초를 두었습니다. 그러나 거의 동일합니다. 요소를 감쌀 필요는 없습니다. 레오의 대답은 내 것과 거의 같습니다. 그래서, 우리는 최고입니다 : D –

2

예. 유연한 상자 모델의 order CSS 속성을 사용할 수 있습니다. http://caniuse.com/#feat=flexbox

그러나,이 있습니다 ... 부모 요소가 display:flex

ul { 
 
    display: -webkit-box; 
 
    display: -moz-box; 
 
    display: -ms-flexbox; 
 
    display: -moz-flex; 
 
    display: -webkit-flex; 
 
    display: flex; 
 
    
 
    -moz-flex-flow: wrap; 
 
    -webkit-flex-flow: wrap; 
 
    flex-flow: wrap; 
 
} 
 
ul li { 
 
    width: 100% 
 
} 
 
ul li:nth-of-type(1) { 
 
    order: 2; 
 
} 
 
ul li:nth-of-type(2) { 
 
    order: 3; 
 
} 
 
ul li:nth-of-type(3) { 
 
    order: 4; 
 
} 
 
ul li:nth-of-type(4) { 
 
    order: 5; 
 
} 
 
ul li:nth-of-type(5) { 
 
    order: 1; 
 
}
<ul> 
 
    <li>1</li> 
 
    <li>2</li> 
 
    <li>3</li> 
 
    <li>4</li> 
 
    <li>5</li> 
 
</ul>
또한

여기에 설명 된대로 모든 브라우저가 유연한 상자 모델을 지원한다는 인식을 설정해야합니다주의하십시오 꽤 많은 polyfill을 사용하면 이전 브라우저를 지원해야하는 경우 구형 브라우저를 지원할 수 있습니다

+0

좋은 대답. 고맙습니다! Herm Luna의 대답은'flex-direction : column'을 사용하는 대신'flow-flow : wrap'을 선택했습니다. 어느 것이 더 나은 선택인가? 아니면 다른 질문으로 더 좋습니까? – RockPaperLizard

+0

글쎄, 그건 항목의 순서에 관한 귀하의 질문의 맥락에서 정말로 중요하지 않습니다. 그것은 모두 당신이'flex-wrap' 또는'flex-direction' 중 적절한 값을 사용할 아이템을 어떻게 레이아웃 하느냐에 달렸습니다 ...'flex-flow'는 위에서 언급 한 속성들에 대한 단축형 일뿐입니다. ..'font-size','font-weight' 또는'border-width','border-style' 등을위한'border'와 같은'font'와 비슷합니다. – Leo

+0

Thanks Leo. 귀하의 답변과 Herm Luna의 답변은 모두 최고 수준입니다. 나는 Herm Luna의 답변을 받아 들일 것입니다. 왜냐하면'flex-direction : column'을 사용하여 감았 기 때문이며, 담당자가 더 적기 때문입니다. 하지만 저는 진심으로 감사와 감사를드립니다. 그것은 대표자보다 훨씬 귀중합니다! 도와 주셔서 대단히 감사합니다! – RockPaperLizard

관련 문제