CSS로 픽셀 아트 만들기
box-shadow
의 힘픽셀 한 무더기
<div>
를 만들고 배경색을 바꾸어 픽셀 예술을 만드는 것은 100% 가능하지만, 여러 곳에서 픽셀을 반복적으로 사용하려면 대량 <div>
픽셀을 추적하고 복제해야 한다.나는 단일<div>
으로 픽셀 예술을 만드는 것을 더욱 좋아한다. 이것은 box-shadow
속성 덕분이다.box-shadow
일반적으로 다음 예와 같이 요소 뒤에 그림자 효과를 생성하는 데 사용됩니다.이것은 우리가 직변 화소 예술을 창작하는 데 어떤 도움이 됩니까?
box-shadow
정의에서 모호함과 확산 파라미터를 삭제함으로써 우리는 음영의 측면을 곧게 펼 수 있다.그런 다음 섀도우를 블록 옆이 아닌 블록 옆으로 이동합니다.다음 규칙에 따라 X 및 Y 오프셋 매개변수를 조정할 수 있습니다.
X 오프셋:
20px
.만약 우리가 Y 편이량을 0
로 바꾸면, 결과는 두 블록이 나란히 놓인 것처럼 보일 것이다.픽셀 아트처럼 보이기 시작했어!그러나 이것은 우리에게 두 개의 픽셀만 주었을 뿐 우리는 더 많은 것을 필요로 한다.고맙다
box-shadow
속성은 한 가지 효과에만 국한된 것이 아니다.효과를 쉼표로 구분하여 여러 픽셀의 그림자를 만들 수 있습니다.이제 우리는 어떻게 사용하는지 알게 되었다
box-shadow
. 진정한 화소 예술을 만들 때가 되었다.픽셀 고양이 만들기
픽셀 버전의 Pusheen을 만듭니다.만약 당신이 픽셀 예술의 초보자라면, 나는 당신이 기존의 예술 작품을 검색하면, 픽셀 배치 위치의 참고가 될 수 있을 것이라고 건의합니다.이 버전의 Pixel Pusheen을 다시 작성합니다.
그것은 414개의 픽셀(23열 x 18행)으로 구성되어 있다.각 픽셀을 쉽게 식별할 수 있도록 하기 위해서, 나는 포토샵을 사용하여 참고 이미지에 격자를 덮어 놓았다.
픽셀을 어디에서든 그릴 수 있지만, 나는 맨 왼쪽 상단부터 그릴 것이다. 그러면 효과
box-shadow
의 마이너스 변이를 걱정할 필요가 없다.나는 414
box-shadow
개의 성명을 수동으로 작성하는 것을 피하기 위해 일반적인 CSS가 아닌 SASS를 사용할 것이다.사용자 정의된 SASS 함수와 목록을 사용하여 우리는 자동으로 편향 위치를 계산하고 코드를 더욱 무미건조하게 할 수 있다.우선, 나는
#cat
블록에 대해 약간의 수정을 진행할 것이다.나는 box-shadow
를 블록 자체에 적용하지 않고 블록에 대해 절대적으로 위치를 정하는 위조 요소에 적용한다.왜?box-shadow
공간을 차지하지 않기 때문에 이것은 내가 고양이 덩어리 옆에 다른 원소를 놓으면 내 그림자 위에 있다는 것을 의미한다.만약 우리가cat 블록의 크기를 픽셀 예술의 최종 크기로 간주한다면 우리는 이 문제를 피할 수 있지만, 픽셀의 너비/높이를 단독으로 정의할 수 있는 위조 요소가 필요하다. (음영의 크기는 응용 상자의 음영 요소에서 계승된다는 것을 기억해라.)이러한 변화는 다음과 같습니다.#cat {
position: relative;
width: calc(23 * #{$size}); // Pixel size * # of columns
height: calc(18 * #{$size}); // Pixel size * # of rows
margin: 1rem;
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: $size;
height: $size;
// box-shadow will be applied here
}
}
다음에 변수를 설정합니다.// The width/height of each of our "pixels".
$size: 20px;
// Colors
$t: transparent;
$black: #000;
$gray: #cdc9cf;
$dkgray: #a09da1;
$pink: #ffa6ed;
현재 우리는 모든 픽셀이 어떤 색이어야 하는지 추적하기 위해 목록을 만들 것이다.왼쪽부터 첫 번째 줄의 목록을 만듭니다.$first: ($t, $t, $t, $black, $t, $t, $t, $t, $black);
다음 행마다 새 변수($second
, $third
등을 만들 수 있지만 다음 그림과 같이 네스트된 목록을 만드는 것이 좋습니다.$cat: (
($t, $t, $t, $black, $t, $t, $t, $t, $black),// 1st Row
($t, $t, $black, $gray, $black, $t, $t, $t, $t, $black, $gray, $black)// 2nd Row
// Additional rows
);
네스트된 리스트 방법의 장점은 각 셀에 box-shadow
효과를 생성하는 데 필요한 모든 정보를 제공하는 것입니다. 즉, 오프셋 및 섀도우 색상을 계산하는 데 사용되는 X/Y 위치입니다.이러한 정보는 사용자 정의 픽셀화 기능을 사용하여 액세스할 수 있습니다.픽셀 그리기 위해 SASS 함수 작성
"픽셀화"기능은 색상 목록을 사용 가능
box-shadow
정의로 변환하는 번거로운 작업을 수행합니다.다음에 나는 이 함수의 기능을 한 줄 한 줄 설명하였다.@function pixelize($colors, $size) {
$result: '';
$numRows: length($colors);
@for $rowIndex from 1 through $numRows {
$y: ($rowIndex - 1);
$row: nth($colors, $rowIndex);
$numCols: length($row);
@for $cellIndex from 1 through $numCols {
$x: ($cellIndex - 1);
$color: nth($row, $cellIndex);
$sep: ', ';
@if $x == 0 and $y == 0 {
$sep: '';
}
$result: $result + '#{$sep}#{$x * $size} #{$y * $size} #{$color}'
}
}
$result: unquote($result);
@return $result;
}
$colors
과 픽셀$size
이다.$result
변수를 문자열로 초기화합니다.이것은 함수가 수정하고 되돌아오는 변수입니다.length
함수$rowIndex
는 1씩 증가한다.box-shadow
효과에 대한 구분자를 설정하지만 첫 번째 칸의 구분자를 삭제하여 속성 값이 유효한지 확인합니다.$result
값을 기존 값에 새 셀로 업데이트합니다.$size
= X 오프셋$size
= Y 오프셋$result
는 문자열이기 때문에 unquote
함수를 사용하여 인용부호를 포함하는 내용을 삭제합니다.마지막으로 결과를 되돌려줍니다.최종 결과
그것들을 함께 놓아라. 이것은 우리의 마지막 푸젠 픽셀이다.
아주 깔끔해요!약간의 재구성, CSS 변수의 사용, 그리고 약간의 자바스크립트를 통해 우리는 심지어 사용자로 하여금 그들의 고양이를 위해 자신의 색깔을 선택하게 할 수 있다.
나는 이 문장이 네가 자신의 화소 예술을 만드는 것을 계발할 수 있기를 바란다.설령 그렇지 않더라도, 나는 당신이
box-shadow
속성을 어떻게 사용하여 프로젝트에서 깔끔한 효과를 만드는지 배웠으면 합니다.만약 더 많은 픽셀 예술에 관심이 있다면, 애니메이션을 만드는 예를 포함해서 Geoff Graham의 Fun Times with CSS Pixel Art 를 보십시오.
Reference
이 문제에 관하여(CSS로 픽셀 아트 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jnschrag/creating-pixel-art-with-css-3451텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)