Bootstrap 3이 box-sizing : border-box로 전환 한 이유는 무엇입니까?


98

내 Bootstrap 테마를 v2.3.2에서 v3.0.0으로 마이그레이션하고 있는데 한 가지 알아 차린 점은 bootstrap.css의 다음 스타일로 인해 많은 차원이 다르게 계산된다는 것입니다.

*,
*:before,
*:after {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

누구든지 Bootstrap이 모든 요소의 상자 크기를 테두리 상자로 전환하는 이유를 설명 할 수 있습니까? 나는 그것이 퍼센트 기반의 새로운 그리드 시스템과 관련이 있다고 생각하지만 위의 선택기는 그리드 요소에만 적용되는 것은 아닙니다.

약간 급진적 인 imho 같네요 :-)

누구든지 통찰력을 줄 관심이 있습니까?


11
CSS 스 니펫에 감사드립니다. 이것은 부트 스트랩이 아닌 프로젝트에 이것을 적용하기 위해 내가 찾던 것입니다. :)
— berto 2014-08-23

* : before 및 * : after가 필요한 이유를 아는 사람이 있습니까?
— limscoder 2014

2
@limscoder *:before와가 *:after에 필요한 또한이 박스 모델을 적용 :before하고 :after의사 요소.
— buschtoens

1
* 선택기는 개발자가 CSS의 다른 곳에서 콘텐츠 상자 또는 패딩 상자를 사용하기 어렵게 만듭니다. 처음부터 새로운 프로젝트를 시작하는 가장 좋은 방법입니다 html { box-sizing: border-box; } *, *:before, *:after { box-sizing: inherit; }
— Jarek Przygódzki

답변:


102

릴리스 정보는 다음을 알려줍니다. ( http://blog.getbootstrap.com/2013/08/19/bootstrap-3-released/ )

기본적으로 더 나은 상자 모델. Bootstrap의 모든 것이 상자 크기 조정 : 테두리 상자,보다 쉬운 크기 조정 옵션 및 향상된 그리드 시스템을 제공합니다.

개인적으로 저는 대부분의 혜택이 그리드 시스템에 있다고 생각합니다. Twitter의 Bootstrap에서는 모든 그리드가 유동적입니다. 열은 전체 너비의 백분율로 정의됩니다. 그러나 거터의 너비는 픽셀 단위로 고정되어 있습니다. 기본적으로 열 양쪽의 패딩은 15px입니다. 픽셀 너비와 백분율의 조합은 복잡 할 수 있습니다. 로 border-box때문에이 계산 쉽다 border-box값 (컨텐츠 박스 기본 반대) 최종 렌더링 상자 선언 폭 만들고, 상자 안에 어떤 테두리와 패딩 컷. ( http://css-tricks.com/box-sizing/ )

또한 읽기 : http://www.paulirish.com/2012/box-sizing-border-box-ftw/


56
간단한 예 : 100 % 너비 div에 1 픽셀 테두리를 content-box. 이제 100 % + 2 픽셀의 무언가가 생겼습니다. 를 사용하면 border-box문제가 발생하지 않습니다. 여전히 100 %입니다.
— emptywalls

1
이 문제 에 대한 좋은 추가 논의와 정당화 .
— yuvilio

1
또한 타사 라이브러리를 방해하지 않도록 상자 크기 조정 구현 모범 사례가 업데이트되었습니다. 부트 스트랩이 업데이트 할 계획인지 확실하지 않지만 다음과 같이해야합니다. css-tricks.com/…
— jbyrd

2
개인적으로 IE6 이후로 박스 모델을 변경 한 적이 없습니다. IE가 더 잘 알고있는 유일한 것입니다. 그리고 예, 오늘은 100 % 더하기 2 픽셀 문제를 해결하기위한 calc ()가 있지만 사무라이의 방식은 항상 테두리와 패딩이 포함 된 테두리 상자였습니다. 그것이 인간의 뇌가 상자를 상상하는 방식입니다. 나는이 "새로운 트렌드"를보고 싶어한다. 나는 그들을위한 환영 음료를 가지고있다.
— dkellner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.