2016-10-18 11 views
2

당사 사이트에는 당사 제품에 대한 일부 색상 견본이 필요하며 보스는 인쇄 카탈로그에서와 똑같이 보이기를 원합니다. 이것은 사각형의 수평 행을 의미합니다. 각기 다른 색을 사용하고 절대 중심에 그 색의 이름이 겹쳐집니다. 그래서 같이 :텍스트를 수평으로 정렬하는 동안 요소를 수직 및 수평으로 가운데에 맞 춥니 다

Catalog's row of swatches

나는이 확립 된 규칙을 따라 우리의 웹 사이트의 견본을 만들기위한 두 가지 방법을 시도했지만, 그냥 어떤 이유로 일이 아닙니다. 그리고 예, 저는 아직 조금 초보자입니다.

는 여기 display:table/display:table-cell 방법을 사용하여, 내 첫 번째 시도이다 :

JSFiddle

<p>Standard Ink Colors</p> 
<ul class="color-list"> 
    <li id="thumb-red"> 
    <p>Red</p> 
    </li> 
    <li id="thumb-orange"> 
    <p>Orange</p> 
    </li> 
    <li id="thumb-athleticgold"> 
    <p>Athletic Gold</p> 
    </li> 
</ul> 
<p>Be sure to specify Standard ink color above or provide us with your PMS ink number. </p> 

enter image description here

모든 라인 업 텍스트의 마지막 기준에 따라.

그래서 나는 Flexbox를 사용하여 시도 :

JSFiddle

<p>Standard Ink Colors</p> 
<ul class="color-list"> 
    <li id="thumb-red">Red</li> 
    <li id="thumb-orange">Orange</li> 
    <li id="thumb-athleticgold">Athletic Gold</li> 
</ul> 
<p>Be sure to specify Standard ink color above or provide us with your PMS ink number. </p> 

enter image description here

비슷한 문제 만 지금은 일이 베이스 라인에 일렬로.

수정 사항이 있습니까?

답변

2

개별 항목의 부모를 플렉스 컨테이너로 만듭니다. 이 몇 가지 기본 설정을 활성화합니다 :

  • flex-direction: row - 각 자식 요소 ("플렉스 항목")는 단일 행에 강제
  • flex-wrap: nowrap -

그런 다음 할 항목은 포장 할 수 없습니다 주 컨테이너의 각 플렉스 아이템은 (중첩 된) 플렉스 컨테이너로서의 기능을 수행합니다. 이렇게하면 하위 요소 (이 경우 텍스트)의 정렬을 제어 할 수 있습니다.

justify-content, align-itemstext-aligncenter에 대한 모든 설정과 함께, 텍스트는 항상 수직 및 수평으로 중심이 될 것입니다. 원래 코드의 정렬 불량에 대해서는

.color-list { 
 
    display: flex; 
 
    justify-content: center; 
 
    padding: 0; 
 
} 
 
.color-list li { 
 
    display: flex; 
 
    justify-content: center; 
 
    align-items: center;  
 
    text-align: center; 
 
    width: 4em; 
 
    height: 4em; 
 
} 
 
#thumb-red   { background-color: #CE1126; } 
 
#thumb-orange  { background-color: #FE5000; } 
 
#thumb-athleticgold { background-color: #FFB81C; }
<ul class="color-list"> 
 
    <li id="thumb-red">Red</li> 
 
    <li id="thumb-orange">Orange</li> 
 
    <li id="thumb-athleticgold">Athletic Gold</li> 
 
</ul>

... 일반적인 의미에서

은 각 항목에 display: inline-flex를 사용할 필요가 없습니다. 그러나 이것이 당신이 가진 요구 사항이라면, 각각 에 vertical-align: middle 또는 top을 추가하면됩니다.여기에 설명입니다 : Why is there a vertical scroll bar if parent and child have the same height?

브라우저 지원 : 인 flexbox 모든 주요 브라우저, except IE < 10에서 지원

. Safari 8 및 IE10과 같은 일부 최신 브라우저 버전은 vendor prefixes이 필요합니다. 접두사를 추가하는 빠른 방법은 Autoprefixer을 사용하십시오. this answer에서 자세한 내용.

+1

정말이 대답 같은 helpfull했다 바랍니다. 'flex-wrap : wrap'을 켜면 각각의'li' 엘리먼트들이 응답하기위한 목적으로 감쌀 수있게 해줍니다. 나는'justify-content : center' 스타일을'.color-list' 셀렉터에서 제거해야했습니다. 센터 대신 왼쪽 여백으로 되돌려 놓기를 원했기 때문입니다. 굉장한 대답, @Michael_B, 그리고 너무 철저한 것에 감사드립니다! – Sturm

1

모든 접근 방식을 사용할 수 있습니다. 그냥 vertical-align: top;에 적용하십시오. 컬러리스트 리

+0

이것은 확실히 작동했습니다. 나중에 참조 할 수 있도록 메모 해 두어야합니다. 감사합니다. – Sturm

1

귀하의 CSS를 약간 변경했습니다. 컨테이너에 디스플레이 및 테이블 추가 : talbe-cell이 추가되었습니다. 그것은 견본 동일한 폭을 모두 유지로

.color-list { 
 
    display: table; 
 
} 
 
.color-list li { 
 
    width: 4em; 
 
    height: 4em; 
 
    display: table-cell; 
 
    vertical-align: middle; 
 
    text-align: center; 
 
} 
 

 
.color-list li > p { 
 
    text-align: center; 
 
} 
 

 
#thumb-red { 
 
    background-color: #CE1126; 
 
} 
 

 
#thumb-orange { 
 
    background-color: #FE5000; 
 
} 
 

 
#thumb-athleticgold { 
 
    background-color: #FFB81C; 
 
}
<p>Standard Ink Colors</p> 
 
<ul class="color-list"> 
 
    <li id="thumb-red"> 
 
    <p>Red</p> 
 
    </li> 
 
    <li id="thumb-orange"> 
 
    <p>Orange</p> 
 
    </li> 
 
    <li id="thumb-athleticgold"> 
 
    <p>Athletic Gold</p> 
 
    </li> 
 
</ul> 
 
<p>Be sure to specify Standard ink color above or provide us with your PMS ink number. </p>

나는, 내가

+0

이것은 매우 도움이되었습니다. 유일한 문제는'p' 태그를 HTML에서 제거해야한다는 것입니다. 일단 이것이 끝나면 당신의 제안은 완벽하게 ... 거의 잘되었습니다. 사실, 나는 하나의 문제가 발견 될 때까지이 솔루션을 거의 사용하지 않았다. 'display : table' 스타일이 그 이유라고 생각합니다. 약 12 개 정도의'li' 요소를 추가 한 후, 견본 행은 부숴지고 그 안에있는 부트 스트랩 열의 오른쪽으로 피가났습니다. 따라서 광범위하게 지원되는 것은 아니지만 Flex 응답을 사용하기로 결정했습니다. 멋진 도움에 감사드립니다! – Sturm

+1

문제 없음, @ Sturm! 제 의도는 어떤 식 으로든 돕는 것이 었습니다. 실제로 플렉스 박스가 포함 된 응답이 가장 좋은 대안이라고 생각합니다. 가장 중요한 것은 지식 교환입니다. 의견에 감사드립니다. –