흰색으로 단순한 모양을 표시하는 투명한 PNG가 주어지면 CSS를 통해 어떻게 든 색상을 변경할 수 있습니까? 어떤 종류의 오버레이 또는 그렇지 않은가?
답변
당신이 필터를 사용 -webkit-filter
하고 filter
: 필터는 상대적으로 브라우저에 새로운 있지만 다음 CanIUse 테이블에 따라 브라우저의 90 % 이상에서 지원됩니다 https://caniuse.com/#feat=css-filters
이미지를 회색조, 세피아 등으로 변경할 수 있습니다 (예 참조).
이제 필터를 사용하여 PNG 파일의 색상을 변경할 수 있습니다.
body {
background-color:#03030a;
min-width: 800px;
min-height: 400px
}
img {
width:20%;
float:left;
margin:0;
}
/*Filter styles*/
.saturate { filter: saturate(3); }
.grayscale { filter: grayscale(100%); }
.contrast { filter: contrast(160%); }
.brightness { filter: brightness(0.25); }
.blur { filter: blur(3px); }
.invert { filter: invert(100%); }
.sepia { filter: sepia(100%); }
.huerotate { filter: hue-rotate(180deg); }
.rss.opacity { filter: opacity(50%); }
<!--- img src http://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg/500px-Mona_Lisa%2C_by_Leonardo_da_Vinci%2C_from_C2RMF_retouched.jpg -->
<img alt="Mona Lisa" src="https://www.pexels.com/photo/photo-of-a-green-leaf-2563743/?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="original">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="saturate" class="saturate">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="grayscale" class="grayscale">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="contrast" class="contrast">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="brightness" class="brightness">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="blur" class="blur">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="invert" class="invert">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="sepia" class="sepia">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="huerotate" class="huerotate">
<img alt="Mona Lisa" src="https://images.pexels.com/photos/40997/mona-lisa-leonardo-da-vinci-la-gioconda-oil-painting-40997.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260" title="opacity" class="rss opacity">
답변
16 진수 색상 값 을 삽입 하고이 색상을 png에 적용하는 데 필요한 필터를 반환하는 이 훌륭한 코드 펜 예제를 발견했습니다.
검정색에서 대상 16 진 색상으로 변환하는 CSS 필터 생성기
예를 들어 다음과 같은 색상을 사용하려면 png가 필요했습니다. # 1a9790
그런 다음 png에 다음 필터를 적용해야합니다.
filter: invert(48%) sepia(13%) saturate(3207%) hue-rotate(130deg) brightness(95%) contrast(80%);
답변
아이콘 글꼴을 살펴볼 수 있습니다. http://css-tricks.com/examples/IconFont/
편집 : 최신 프로젝트에서 Font-Awesome 을 사용하고 있습니다. 부트 스트랩 할 수도 있습니다. 간단히 이것을 당신의 <head>
:
<link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css" rel="stylesheet">
<!-- And if you want to support IE7, add this aswell -->
<link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome-ie7.min.css" rel="stylesheet">
그런 다음 다음과 같은 아이콘 링크를 추가하십시오.
<a class="icon-thumbs-up"></a>
여기의 전체 컨닝 페이퍼는
–편집하다–
Font-Awesome은 새 버전에서 다른 클래스 이름을 사용합니다. 아마도 CSS 파일이 크게 작아지고 모호한 CSS 클래스를 피하기 때문일 것입니다. 이제 다음을 사용해야합니다.
<a class="fa fa-thumbs-up"></a>
편집 2 :
방금 github은 자체 아이콘 글꼴 인 Octicons를 사용합니다
. 무료로 다운로드 할 수 있습니다. 또한 고유 한 아이콘 글꼴을 만드는 방법 에 대한 팁도 있습니다 .
답변
SVG 필터를 사용 하여이 작업을 수행 할 수있었습니다. 소스 이미지의 색상과 변경하려는 색상을 곱하는 필터를 작성할 수 있습니다. 아래 코드 스 니펫에서 flood-color 는 이미지 색상을 변경하려는 색상입니다 (이 경우 빨간색). feComposite는 필터에 색상 처리 방법을 알려줍니다. 산술이있는 feComposite의 공식은 (k1 * i1 * i2 + k2 * i1 + k3 * i2 + k4)입니다. 여기서 i1 및 i2는 입력 / 입력 2의 입력 색상입니다. 따라서 k1 = 1 만 지정하면 i1 * i2 만 수행되므로 두 입력 색상을 곱하는 것입니다.
참고 : 인라인 SVG를 사용하므로 HTML5에서만 작동합니다. 그러나 SVG를 별도의 파일에 넣어 이전 브라우저 에서이 작업을 수행 할 수 있다고 생각합니다. 나는 그 접근법을 아직 시도하지 않았습니다.
스 니펫은 다음과 같습니다.
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="60" height="90" style="float:left">
<defs>
<filter id="colorMask1">
<feFlood flood-color="#ff0000" result="flood" />
<feComposite in="SourceGraphic" in2="flood" operator="arithmetic" k1="1" k2="0" k3="0" k4="0" />
</filter>
</defs>
<image width="100%" height="100%" xlink:href="http://i.stack.imgur.com/OyP0g.jpg" filter="url(#colorMask1)" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="60" height="90" style="float:left">
<defs>
<filter id="colorMask2">
<feFlood flood-color="#00ff00" result="flood" />
<feComposite in="SourceGraphic" in2="flood" operator="arithmetic" k1="1" k2="0" k3="0" k4="0" />
</filter>
</defs>
<image width="100%" height="100%" xlink:href="http://i.stack.imgur.com/OyP0g.jpg" filter="url(#colorMask2)" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="60" height="90" style="float:left">
<defs>
<filter id="colorMask3">
<feFlood flood-color="#0000ff" result="flood" />
<feComposite in="SourceGraphic" in2="flood" operator="arithmetic" k1="1" k2="0" k3="0" k4="0" />
</filter>
</defs>
<image width="100%" height="100%" xlink:href="http://i.stack.imgur.com/OyP0g.jpg" filter="url(#colorMask3)" />
</svg>
답변
img 태그에는 다른 것과 마찬가지로 배경 속성이 있습니다. 스텐실과 같이 투명한 모양의 흰색 PNG가있는 경우 다음을 수행 할 수 있습니다.
<img src= 'stencil.png' style= 'background-color: red'>
답변
예 🙂
Surfin ‘Safari-블로그 아카이브»CSS 마스크
WebKit은 이제 CSS에서 알파 마스크를 지원합니다. 마스크를 사용하면 최종 디스플레이에서 상자의 일부를 녹아웃하는 데 사용할 수있는 패턴으로 상자의 내용을 오버레이 할 수 있습니다. 즉, 이미지의 알파를 기준으로 복잡한 모양으로 클립 할 수 있습니다.
[…]
웹 디자이너에게 이러한 마스크에 대한 많은 제어 및 적용 방법을 제공하기 위해 새로운 속성을 도입했습니다. 새 속성은 이미 존재하는 배경 및 테두리 이미지 속성과 유사합니다.-webkit-mask (background) -webkit-mask-attachment (background-attachment) -webkit-mask-clip (background-clip) -webkit-mask-origin (background-origin) -webkit-mask-image (background-image) -webkit-mask-repeat (background-repeat) -webkit-mask-composite (background-composite) -webkit-mask-box-image (border-image)
답변
에서 대부분의 브라우저 , 당신은 필터를 사용할 수 있습니다 :
-
모두
<img>
다른 요소의 요소와 배경 이미지 -
CSS에서 정적으로 설정하거나 JavaScript를 사용하여 동적으로 설정
아래 데모를 참조하십시오.
<img>
집단
이 기술을 <img>
요소에 적용 할 수 있습니다 .
#original, #changed {
width: 45%;
padding: 2.5%;
float: left;
}
#changed {
-webkit-filter : hue-rotate(180deg);
filter : hue-rotate(180deg);
}
<img id="original" src="http://i.stack.imgur.com/rfar2.jpg" />
<img id="changed" src="http://i.stack.imgur.com/rfar2.jpg" />
배경 이미지
이 기술을 배경 이미지에 적용 할 수 있습니다.
#original, #changed {
background: url('http://i.stack.imgur.com/kaKzj.jpg');
background-size: cover;
width: 30%;
margin: 0 10% 0 10%;
padding-bottom: 28%;
float: left;
}
#changed {
-webkit-filter : hue-rotate(180deg);
filter : hue-rotate(180deg);
}
<div id="original"></div>
<div id="changed"></div>
자바 스크립트
런타임에 JavaScript를 사용하여 필터를 설정할 수 있습니다.
var element = document.getElementById("changed");
var filter = 'hue-rotate(120deg) saturate(2.4)';
element.style['-webkit-filter'] = filter;
element.style['filter'] = filter;
#original, #changed {
margin: 0 10%;
width: 30%;
float: left;
background: url('http://i.stack.imgur.com/856IQ.png');
background-size: cover;
padding-bottom: 25%;
}
<div id="original"></div>
<div id="changed"></div>