이 기사에서는 CSS에 오는 5 가지 새로운 속성을 탐구하고, 그들이하는 일과 프로젝트에서 실제적인 사용에 대해 실제로 사용할 수있는 방법을 살펴 보겠습니다. 우리는 A를 만들 것입니다 웹 사이트 레이아웃 모서리에있는 뉴스 피드와 작은 채팅 상자가 포함 된 페이지의 경우. 더 많은 CSS 트릭을 위해 우리의 기사를 탐색하는 것을 탐색하십시오. CSS 애니메이션 예제 ...에 완전히 새로운 사이트를 만드는 경우, 웹 사이트 빌더 그리고 당신을 탐색해야합니다 웹 호스팅 옵션.
이 자습서에서는 크롬 65+ 또는 Firefox 59+가 필요합니다. 그를 살펴보십시오 Github Repo. 단계별 코드의 경우. 우리는 다음과 같은 기능을 활용하여 더 나은 경험을 창출하고 몇 가지 문제를 해결합니다. 팀과 함께 디자인하는 경우 최선을 활용하십시오. 클라우드 스토리지 일을 응집력있게 유지하는 것.
CSS 디스플레이 모듈 (레벨 3)
CSS 조건부 규칙 모듈 (레벨 3)
CSS 오버 스크롤 동작 모듈 (레벨 1)
CSS 선택기 모듈 (레벨 4)
CSS 봉쇄 모듈 (레벨 1)
먼저 뉴스 피드를 위해 슈퍼 간단하고 반복되는 마크 업을 설정해야합니다. A를 만드겠습니다 .컨테이너 Div 안에 정렬되지 않은 목록. 줘 & lt; Ul & gt; 클래스의 .먹이다 그런 다음 DIV를 포함하는 각각 10 개의 목록 항목을 만듭니다. .카드 클래스 및 텍스트 카드 1, 카드 2 등
마침내 다른 것을 만들어라 목록 - 항목 in-~ 6 ~ 6 .ested. - 이것은 나중에 도움이 될 것입니다. & lt; Ul & gt; 텍스트 카드 A, 카드 B 등을 사용하여 세 개의 목록 항목이있는 내부
& lt; body & gt;
& lt; div class = "container"& gt;
& lt; UL 클래스 = "피드"& gt;
& lt; div class = "카드"& gt; 카드 1 & lt; & lt; & lt; & lt; li & gt;
& lt; li & gt; & lt; div class = "카드"& gt; 카드 2 & lt; & lt; & lt;
& lt; li & gt; & lt; div class = "카드"& gt; 카드 3 & lt; & lt; / li & gt;
& lt; li & gt; & lt; div class = "카드"& gt; 카드 4 & lt; & lt; & lt; / li & gt;
& lt; div 클래스 = "카드"카드 5 & lt; & lt; / li & gt;
& lt; li class = "중첩 된"& gt;
& lt; Ul & gt;
& lt; div class = "카드"& gt; 카드 a & lt; / li & gt;
& lt; li & gt; & lt; div class = "카드"카드 b & lt; & lt; & lt; li & gt;
& lt; div class = "카드"& gt; 카드 C & lt; & lt; & li & gt;
& lt; / ul & gt;
& lt; / li & gt;
& lt; div class = "카드"& gt; 카드 6 & lt; & lt; & lt; li & gt;
& lt; div 클래스 = "카드"& gt; 카드 7 & lt; & lt; & lt; li & gt;
& lt; li & gt; & lt; div class = "카드"카드 8 & lt; & lt; li & gt;
& lt; div 클래스 = "카드"& gt; 카드 9 & lt; & lt; & li & gt;
& lt; div class = "카드"& gt; 카드 10 & lt; & lt; / li & gt;
& lt; / ul & gt;
& lt; / div & gt;
& lt; / body & gt;
이제 뉴스 피드와 더보기 시작할 수 있도록 빠른 스타일을 추가해야합니다. 우리는 우리가 줄 수 있습니다 & lt; body & gt; 미묘한 회색 배경 색상. 그런 다음 .컨테이너 최대 너비가 800px 및 사용 마진 : 0 자동; 가운데에 정렬하십시오.
또한 주겠다고합시다 .카드 흰색 배경, 패딩 및 마진 10 픽스 및 마침내 최소 높이 300px - 이것은 페이지를 스크롤 할 수 있도록 충분히 제공해야합니다. 마지막으로 우리는 FlexBox 마술을 뿌린다 .먹이다 항목을 멋지게 흐르게하기 위해 행당 두 장의 카드가 흐르게하십시오.
. {
디스플레이 : 플렉스;
플렉스 랩 : 랩;
}
. 피드 리튬 {
Flex : 1 0 50 %;
}
목록을 아래로 스크롤하면 중첩 된 목록에있는 카드가 카드 A-C가 있음을 알아 차리면 일부 레이아웃 문제가 발생합니다. 이상적으로 우리는 그들이 나머지 카드로 흐르도록하기를 원하지만 모두 한 블록에 모두 붙어 있습니다. 그 이유는 다음과 같은 플렉스 컨테이너입니다. 디스플레이 : 플렉스 - 즉각적인 어린이 (즉, 목록 항목)를 Flex 품목으로 만듭니다.
이제는 일반적으로 이것을 고치는 유일한 방법은 마크 업을 바꾸는 것입니다. 그러나 당신이 그 사치가없는 것처럼 척하십시오. 아마도 뉴스 피드 마크 업은 타사 스크립트에 의해 생성되거나 레거시 코드만이 리투스를 타는 것입니다. 그렇다면 어떻게 이것을 고칠 수 있습니까?
만나다 디스플레이 : 내용물 ...에 이 작은 원 라이너는 본질적으로 요소가없는 것처럼 요소를 작동시킵니다. 당신은 여전히 요소의 자손을 본적이지만 요소 자체가 레이아웃에 영향을주지 않습니다.
우리가 마크 업을 바꿀 수 없기 때문에 (이 단계에 대해서만) 우리는 이것에 대해 조금 똑똑 할 수 있고 .카드 요소 Flex 항목은 거의 전체 마크 업을 거의 무시합니다.
먼저 기존을 제거하십시오 . 피드 리 클래스 및 사용 디스플레이 : 내용물 모두 & lt; Ul & gt; 과 & lt; li & gt; 집단:
. eled UL,
. 피드 리튬 {
디스플레이 : 내용;
}
이제 카드가 순서대로 흐르는 것을보아야하지만 사이징을 잃어 버렸습니다. Flex 속성을 새로 추가하여 해결하십시오 .카드 대신 :
. 카드 {
Flex : 1 0 40 %;
}
타다! 우리 카드는 이제 구조적으로 정한 목록 마크 업이 존재하지 않는 것처럼 FlexBox의 경이로움을 사용하고 있습니다.
사이드 메모로서 당신은 그 이유를 궁금해 할 수도 있습니다. 플렉스 기준 값은 40 %로 설정됩니다. 이것은 그 것이기 때문입니다 .카드 클래스는 마진이 있으며, 이는 기대할 때와 마찬가지로 너비 계산에 포함되어 있지 않습니다. 박스 크기 조정 : Boord-Box ...에 이 문제를 해결하려면 우리는 단지 그것을 설정해야합니다. 플렉스 기준 필요한 점에서 포장을 트리거 할 정도로 충분히 높고 FlexBox는 나머지 공간을 자동으로 채 웁니다.
이기는 하지만 디스플레이 : 내용물 우리가 필요로하는 것을 정확히 수행하면 W3C로 초안 상태에서만 작동합니다. 그리고 Chrome 지원에서는 2018 년 3 월에 출시 된 버전 65 버전에만 도착했습니다. 믿을 수 없을만큼 파이어 폭스는 2015 년 4 월 이후부터 지원했습니다!
DevTools에서 스타일을 비활성화하면 변경 사항이 언제 레이아웃을 사용하여 조금만 엉망이되었음을 알 수 있습니다. 디스플레이 : 내용물 적용되지 않습니다. 그래서 우리는 이것을 무엇에 대해 할 수 있습니까? 다음의 새로운 기능을위한 시간 - 기능 쿼리.
이러한 작업은 미디어 쿼리와 마찬가지로 작업을 수행 할 수 있지만 속성 및 값식이 지원되는 경우 CSS 만 사용하여 브라우저를 묻는 것을 허용합니다. 그들이있는 경우 쿼리 내에 포함 된 스타일이 적용됩니다. 이제 우리를 옮치게합시다 디스플레이 : 내용물 스타일을 기능 쿼리에 넣습니다.
@Supports (디스플레이 : 내용) {
. 피드 UL,
. 피드 리튬 {
디스플레이 : 내용;
}
.카드 {
Flex : 1 0 40 %;
}
}
일반적으로 이러한 종류의 프로그레시브 향상 시나리오에서는 새 스타일을 추가하기 위해 쿼리를 사용하며 대체 레이아웃에 필요한 원본 스타일 중 일부를 비활성화해야합니다.
그러나 기능 쿼리에 대한 지원이 꽤 좋기 때문에 (IE를 무시하는 경우) 실제로 기능 쿼리를 사용하려는 것이 좋습니다. 아니 운영자. 그것은 당신이 기대하는 것처럼 작동합니다. 그래서 우리는 원본을 다시 적용 할 수 있습니다. 굽힘 목록에있는 속성은 언제입니까? 디스플레이 : 내용물 지원되지 않습니다.
@Supports (디스플레이 : 내용) {
. 피드 리튬 {
Flex : 1 0 50 %;
}
}
내부에서 아니 쿼리 우리는이 스타일을 추가 할 수 있도록 일부 스타일을 추가 할 수 있습니다 .ested. 항목은 기본적으로 사용하여 상속 된 것을 다시 적용합니다. 디스플레이 : 내용물 ...에
피드 li.nested {
플렉스 기준 : 100 %;
}
. eled li.nested ul {
디스플레이 : 플렉스;
플렉스 랩 : 랩;
}
기능 쿼리의 잠재력을 이미 볼 수 있지만 실제로 시원한 것은 3 개의 사용 가능한 운영자를 사용하여 표현식을 결합 할 수 있다는 것입니다. 과 , 또는 과 아니 ...에 아마도 우리는 또한 확인할 수 있습니다 디스플레이 : 플렉스 지원을 누른 다음 Float 기반 폴백을 추가하십시오.
우리는 여기서 그렇게하지 않을 것입니다. 그러나 우리가 먼저 두 가지 기능 쿼리를 다음과 같이 수정할 것입니다.
@Supports (디스플레이 : Flex) 및 (디스플레이 : 내용) {
...에 ...
}
@Supports (디스플레이 : Flex) 및 (디스플레이 (디스플레이 : 내용)) {
...에 ...
}
보너스로서 다음과 같이 사용자 정의 등록 정보를 테스트 할 수도 있습니다.
@supports (--foo : green) {
...에 ...
}
이제 우리는 화면의 오른쪽 하단에 고정 된 작은 채팅 상자를 추가 해보십시오. 메시지 목록과 사용자가 메시지를 입력 할 텍스트 필드가 필요합니다. 개방 직후이 블록을 추가하십시오 & lt; body & gt; 꼬리표:
& lt; div class = "채팅"& gt;
& lt; div class = "메시지"& gt;
& lt; Ul & gt;
& lt; div 클래스 = "메시지"& gt; 메시지 1 & lt; & lt; & lt; / li & gt;
& lt; div class = "메시지"& gt; 메시지 2 & lt; & lt; / li & gt;
& lt; div class = "메시지"& gt; 메시지 3 & lt; & lt; / li & gt;
& lt; div class = "메시지"& gt; 메시지 4 & lt; & lt; / li & gt;
& lt; div class = "메시지"& gt; 메시지 5 & lt; & lt; / li & gt;
& lt; li & gt; & lt; div class = "메시지"& gt; 메시지 6 & lt; & lt; / li & gt;
& lt; li & gt; & lt; div class = "메시지"& gt; 메시지 7 & lt; & lt; / li & gt;
& lt; div class = "메시지"& gt; 메시지 8 & lt; & lt; / li & gt;
& lt; div class = "메시지"& gt; 메시지 9 & lt; & lt; / li & gt;
& lt; div class = "메시지"& gt; 메시지 10 & lt; & lt; / li & gt;
& lt; / ul & gt;
& lt; / div & gt;
& lt; 입력 유형 = "텍스트"클래스 = "입력"& gt;
& lt; / div & gt;
시간을 빨리 추가 할 시간은 반 명백하게 보이게합니다.
.chat {
배경 : #fff;
테두리 : 10px 솔리드 # 000;
바닥 : 0;
글꼴 크기 : 10px;
위치 : 고정;
오른쪽 : 0;
너비 : 300px;
Z- 색인 : 10;
}
.messages {
국경 바닥 : 5px 솔리드 # 000;
오버플로 : 자동;
패딩 : 10px;
최대 높이 : 300px;
}
.메시지 {
배경 : # 000;
국경 반경 : 5px;
색상 : #fff;
마진 : 0 20 % 10px 0;
패딩 : 10px;
}
.messages li : last-child .message {
마진 하단 : 0;
}
.put {
테두리 : 없음;
디스플레이 : 블록;
패딩 : 10px;
너비 : 100 %;
}
잘하면 이제는 뉴스 피드 위에 앉아있는 메시지 목록이있는 작은 채팅 상자가 있습니다. 큰. 그러나 중첩 된 영역 내부에서 스크롤 할 때 어떤 일이 일어나는지 알아 차리고 스크롤 가능한 범위의 끝까지 도달 했습니까? 시도 해봐. 메시지 끝까지 모든 방법을 스크롤하면 페이지 자체가 대신 스크롤을 시작할 수 있습니다. 이를 스크롤 체인이라고합니다.
우리의 예에서는 큰 문제가 아니라 어떤 경우에도 있습니다. 모달 또는 컨텍스트 메뉴 내부에 스크롤 가능한 영역을 만들 때이 기능을 중심으로 작업해야했습니다.
더러운 수정은 그를 설정하는 것입니다 & lt; body & gt; ...에 오버플로 : 숨김 그러나이 모든 것을 수정하는 멋진 빛나는 새로운 CSS 속성이 있으며 단순한 한 라이너입니다. 안녕하세요 오버 스크롤 - 행동 ...에 세 가지 가능한 값이 있습니다.
우리는 속기를 사용할 수 있습니다 오버 스크롤 - 행동 또는 우리는 특정 방향을 목표로 할 수 있습니다 초과 스크롤 - 행동 - X. (또는 -와이 짐마자 그것을 우리에게 추가합시다 .messages.messages. 수업:
.messages {
...에 ...
Overscroll-Vravention-Y : 포함;
...}
이제 스크롤을 다시 시도하면 콘텐츠의 끝에 도달 할 때 페이지의 스크롤에 더 이상 영향을 미치지 않는다는 것을 알 수 있습니다.
PWA에서 새로 고침을 구현하고 싶다면이 속성은 뉴스 피드를 새로 고치려면 꽤 편리합니다. Android 용 Chrome과 같은 일부 브라우저는 자동으로 자체적으로 추가됩니다. 지금까지 JS를 사용하여 JS를 사용하여 성능에 영향을 미치는 비 수동 핸들러를 사용하여 이벤트를 취소하지 않아도 쉬운 방법이 없었습니다.
이제 더 추가해야합니다 초과 스크롤 - 동작 : 포함되어 있습니다 뷰포트 함유 요소에 대해서는 아마도 & lt; body & gt; 또는 & lt; html & gt; ...에
이 속성은 WICG (Web Inubator Community Group)가 WICG (Web Incubator Community Group)가 제안하는 W3C 표준이 아닌 W3C 표준이 아니라는 점을 주목할 가치가 있습니다. 인기 있고 안정적이며 성숙한 WICG 제안은 나중에 W3C 워킹 그룹으로의 이주를 위해 고려됩니다.
현재 채팅 상자가 꽤 많은 공간을 차지하고 있지 않으면 우리가 상호 작용하지 않는 한 조금만 혼란 스럽습니다. 다행히도 우리는 작은 CSS 마법으로 이것에 대해 뭔가를 할 수 있습니다.
그러나 처음에는 기존 스타일을 약간 수정해야합니다. 기본적으로 우리는 채팅 상자가 붕괴되도록 원하므로 우리는 최대 높이 가치 .messages.messages. 수업. 우리가 거기에있는 동안 우리는 또한 전환을 추가 할 수 있습니다. 최대 높이 특성:
.messages {
...에 ...
최대 높이 : 25px;
전환 : 최대 높이 500ms; }
다음 페이지 : 11-20 단계에서 새 CSS 기능 탐색 계속
현재 페이지: 5 개의 새로운 CSS 기능 탐색 : 단계 01-10.
다음 페이지 5 개의 새로운 CSS 기능 탐색 : 11-20 단계핀 업 예술의 기원은 19 세기 후반에 다시 추적 될 수 있지만, 1940 년대와 1950 년대에는 종종 포스터와 캘린더에 등장했습니다. 예술적 스타일의 �..
artrage는 인기있는 디지털 아트 도구입니다 (더 많은 것을 위해 artrage. 소개)이 튜토리�..
[삼] 페이지 1 / 2 : Illustrator에서 앱 아이콘을 만드는 방법 : 단계 01-11 Illustrator에서 앱 아이콘을 만드는 방법 : �..
SPACESUES는 페인트에 재미 있지만 헬멧 부분은 옳은 속성을 고려해야하기 때문에 헬멧 부분이 오른..