Internet Explorer 9의 그라디언트


111

누구든지 IE9 내의 그라디언트에 대한 공급 업체 접두사를 알고 있습니까? 아니면 여전히 독점 필터를 사용해야합니까?

다른 브라우저에 대한 내용은 다음과 같습니다.

background-image: -moz-linear-gradient(top, #444444, #999999); /* FF3.6 */
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #444444),color-stop(1, #999999)); /* Saf4+, Chrome */
filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999'); /* IE6,IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#444444', EndColorStr='#999999')"; /* IE8 */

보너스로 누구든지 Opera의 공급 업체 접두사를 알고 있습니까?


내가 답변을 선택 했음에도 불구하고 이것은 현재 시점에서만 관련이 있습니다. 이것이 변경되면 누군가 스레드를 업데이트 할 수 있습니까? 매우 감사.
Sniffer

전적으로. 나는 IE 9가 베타 버전이기 때문에 그래디언트를 구현할 것 같지 않다.
Paul D. Waite

5
IE9는 그라디언트를 지원하지 않지만 IE10은 지원합니다.
Catch22

4
IE는 모두 함께 끔찍한 브라우저이며, 인라인 블록을 지원하지 않으며, 이유없이 위치 값이 중단되고, 그래디언트 지원이 없으며, 지옥처럼 느려집니다. 하위 표준 브라우저를 지원하는 시간. 개인적으로 저는 IE 사용자가 내 페이지를 몇 년 동안 보지 못하도록 완전히 막아 왔으며 (실제 브라우저를 사용하도록 지시) 판매를 잃지 않았습니다. 조사를하면 IE가 전체 인터넷 트래픽의 5 % 미만, 매출의 1 % 미만을 차지한다는 것을 알 수 있습니다. 우리가 그것을 지원하는 이유는 무엇입니까?

12
Dan, 귀하의 숫자가 어디에서 오는지 궁금합니다. IE가 트래픽의 5 % 미만이라는 단일 소스를 찾을 수 없습니다.
Jamie Taylor

답변:


44

IE9 베타 1부터 독점 필터를 사용해야합니다.


2
css3please.com 에 따르면 IE10은 CSS 그래디언트를 지원하는 것으로 보입니다. 이것은 좋은 소식입니다 ...
Sniffer

css3please.com은 내 솔루션을 찾는 데 도움이되었습니다. 감사합니다
2013

57

파티에 조금 늦어 보이지만 다음은 일부 상위 브라우저에 대한 예입니다.

/* IE10 */ 
background-image: -ms-linear-gradient(top, #444444 0%, #999999 100%);

/* Mozilla Firefox */ 
background-image: -moz-linear-gradient(top, #444444 0%, #999999 100%);

/* Opera */ 
background-image: -o-linear-gradient(top, #444444 0%, #999999 100%);

/* Webkit (Safari/Chrome 10) */ 
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #444444), color-stop(1, #999999));

/* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(top, #444444 0%, #999999 100%);

/* Proposed W3C Markup */ 
background-image: linear-gradient(top, #444444 0%, #999999 100%);

출처 : http://ie.microsoft.com/testdrive/Graphics/CSSGradientBackgroundMaker/Default.html

참고 : 이러한 모든 브라우저는 16 진수 표기법 대신 rgb / rgba도 지원합니다.


10
나는 IE10을 아직 주요 브라우저로 생각하지 않을 것입니다.
David Murdoch

3
@DavidMurdoch는 기술적으로 사실이지만 CSS에 적절한 확장을 추가하지 않는 것은 의미가 없습니다. 결국 IE10은 주요 브라우저가 될 예정입니다.
thepeer 2011-12-04

4
@Robotsushi는 IE9에 대한 질문에 대한 답변은 아니지만 (선택한 답변은 아마도 그것이 선택된 이유 일 것입니다),이 질문은 "인터넷 익스플로러 CSS 그래디언트"에 대한 Google 결과의 첫 페이지에 있습니다. 지금 여기 IE10은 윈도우 7에 대한 거의 준비가되어 있음을 유용한 무언가를 가지고있는 어떤 해
케빈 아서

최신 버전의 Firefox 및 Opera는 W3C 표준을 지원합니다. (I은 Windows 7에서 파이어 폭스 (19)와 오페라 12.14에서 테스트)
JayVee

2
이것은 IE9를 다루는 질문에 대한 최고 투표 답변이므로 IE9 지원을 포함하도록 끝에 필터를 추가해야합니다.
Joel Coehoorn

46

최고의 크로스 브라우저 솔루션은

background: #fff;
background: -moz-linear-gradient(#fff, #000);
background: -webkit-linear-gradient(#fff, #000);
background: -o-linear-gradient(#fff, #000);
background: -ms-linear-gradient(#fff, #000);/*For IE10*/
background: linear-gradient(#fff, #000);
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#ffffff', endColorstr='#000000');/*For IE7-8-9*/ 
height: 1%;/*For IE7*/ 

37

IE9에는 현재 CSS3 그라디언트 지원이 없습니다. 그러나 여기에 PHP를 사용하여 SVG (수직 선형) 그래디언트를 대신 반환하는 좋은 해결 방법이 있습니다. 이렇게하면 디자인을 스타일 시트에 유지할 수 있습니다.

<?php

$from_stop = isset($_GET['from']) ? $_GET['from'] : '000000';
$to_stop = isset($_GET['to']) ? $_GET['to'] : '000000';

header('Content-type: image/svg+xml; charset=utf-8');

echo '<?xml version="1.0"?>
';

?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%">
    <defs>
        <linearGradient id="linear-gradient" x1="0%" y1="0%" x2="0%" y2="100%">
            <stop offset="0%" stop-color="#<?php echo $from_stop; ?>" stop-opacity="1"/>
            <stop offset="100%" stop-color="#<?php echo $to_stop; ?>" stop-opacity="1"/>
        </linearGradient>
    </defs>
    <rect width="100%" height="100%" fill="url(#linear-gradient)"/>
</svg>

서버에 업로드하고 다음과 같이 URL을 호출하기 만하면됩니다.

gradient.php?from=f00&to=00f

이것은 다음과 같이 CSS3 그라디언트와 함께 사용할 수 있습니다.

.my-color {
    background-color: #f00;
    background-image: url(gradient.php?from=f00&to=00f);
    background-image: -webkit-gradient(linear, left top, left bottom, from(#f00), to(#00f));
    background-image: -webkit-linear-gradient(top, #f00, #00f);
    background-image: -moz-linear-gradient(top, #f00, #00f);
    background-image: linear-gradient(top, #f00, #00f);
}

IE9 미만을 타겟팅해야하는 경우에도 이전 독점 '필터'방법을 사용할 수 있습니다.

.ie7 .my-color, .ie8 .my-color {
    filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr="#ff0000", endColorStr="#0000ff");
}

물론 PHP 코드를 수정하여 그라디언트에 더 많은 정지 점을 추가하거나 더 정교하게 만들 수 있습니다 (방사형 그라디언트, 투명도 등). 그러나 이것은 단순한 (수직) 선형 그라디언트에 적합합니다.


우아한 솔루션. 참고 : 방금 .NET 을 지원하는 브라우저에 SVG가 다운로드 되지 않음을 확인했습니다 linear-gradient.
Jonathan Cross

이러한 svg 파일이 생성되면 캐시하는 방법이 있는지 궁금합니다.
Mike Kormendy 2014 년

보다 확실한 질문은 캐시 된 파일을 요청하는 것과 매번 파일 스트림을 생성하는 데 대한 시간 및 서버로드 모두에서 성능이 어떤지 알아내는 것입니다.
Mike Kormendy 2014 년

1
PHP는 UI 디자인에 대한 지식이나 도움이 없어야합니다. 클라이언트의 요구 사항을 클라이언트에 유지하십시오.
Alex White

11

모든 브라우저 그라디언트에 사용하는 코드 :

background: #0A284B;
background: -webkit-gradient(linear, left top, left bottom, from(#0A284B), to(#135887));
background: -webkit-linear-gradient(#0A284B, #135887);
background: -moz-linear-gradient(top, #0A284B, #135887);
background: -ms-linear-gradient(#0A284B, #135887);
background: -o-linear-gradient(#0A284B, #135887);
background: linear-gradient(#0A284B, #135887);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0A284B', endColorstr='#135887');
zoom: 1;

IE에서 작동 zoom: 1하려면 높이를 지정하거나 hasLayout요소에 적용 해야합니다.


최신 정보:

다음은 LESS 사용자를위한 LESS Mixin (CSS) 버전입니다.

.gradient(@start, @end) {
    background: mix(@start, @end, 50%);
    filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorStr="@start~", EndColorStr="@end~")";
    background: -webkit-gradient(linear, left top, left bottom, from(@start), to(@end));
    background: -webkit-linear-gradient(@start, @end);
    background: -moz-linear-gradient(top, @start, @end);
    background: -ms-linear-gradient(@start, @end);
    background: -o-linear-gradient(@start, @end);
    background: linear-gradient(@start, @end);
    zoom: 1;
}

LESS 사용자로서 IE9에서도 그래디언트가 작동하도록하는 방법을 찾고있었습니다. SVG 생성 방법을 자세히 설명하는 블로그 기사를 찾았습니다. blog.philipbrown.id.au/2012/09/…
James Long

6

Opera는 곧 그라디언트 지원 및 기타 CSS 기능을 사용할 수있는 빌드를 제공하기 시작할 것입니다.

W3C CSS 워킹 그룹은 CSS 2.1로 끝나지 않았습니다. 다들 아시죠? 조만간 완료 될 예정입니다. CSS3는 정확하게 모듈화되어 전체 사양이 아닌 구현으로 모듈을 더 빠르게 이동할 수 있습니다.

모든 브라우저 회사는 다른 소프트웨어주기 방법론, 테스트 등을 사용합니다. 그래서 그 과정은 시간이 걸립니다.

저는 많은 독자들이 CSS3에서 어떤 것을 사용하고 있다면 "점진적 향상"이라는 것을하고 있다는 것을 잘 알고있을 것입니다. 가장 많은 지원을받는 브라우저가 최상의 경험을 얻습니다. 다른 부분은 "단계적 저하"로, 브라우저가 모듈 또는 수행하려는 작업과 관련된 모듈의 일부를 구현할 때까지 경험이 만족 스럽지만 가장 매력적이거나 가장 매력적이지 않음을 의미합니다.

이것은 불행히도 프론트 엔드 개발자가 구현에 대한 일관성없는 타이밍으로 인해 극도로 좌절하는 매우 이상한 상황을 만듭니다. 그래서 그것은 양쪽 모두의 진정한 도전입니다-당신은 브라우저 회사를 비난합니까, W3C를 탓합니까, 아니면 더 나쁘게-당신 자신 (좋은 것은 우리가 모든 것을 알 수 없다는 것을 압니다!) 브라우저 회사와 W3C 그룹에서 일하는 사람들을하십시오 회원들이 스스로를 비난합니까? 당신?

당연히 아니지. 그것은 항상 균형의 게임입니다. 그리고 아직까지 우리는 그 균형의 지점이 실제로 어디에 있는지 파악하지 못했습니다. 그것이 진화 기술 분야에서 일하는 기쁨입니다. :)


4

IE9는 여전히 CSS 그라디언트를 지원하지 않을 것임을 이해합니다. 그것은 다른 훌륭한 새로운 것들을 많이 지원하기 때문에 부끄러운 일입니다.

최소한의 소란으로 다양한 CSS3 기능 (그라데이션, 테두리 반경 및 상자 그림자 포함)을 지원하기 위해 모든 버전의 IE를 얻는 방법 으로 CSS3Pie 를 살펴볼 수 있습니다 .

CSS3Pie가 IE9에서 작동한다고 생각합니다 (사전 릴리스 버전에서 시도했지만 아직 현재 베타에서는 사용하지 않았습니다).


고마워요 Spudley. IE6에서 8까지 CSS3Pie를 사용하고 있지만 IE9에서 사용하지 않기를 바랬습니다! IE8에 CSS3Pie 스타일이있는 각 IE에 대해 별도의 스타일 시트가 있습니다. 현재 사용하고있는 CSS3에서 그라디언트가 빠진 유일한 것이라면 CSS3Pie를 사용하지 않고 IE9 용 스타일 시트를 추가 할 것입니다.
Sniffer

이 게시물도 보지 못했습니다. 답변을 작성하고 동일한 정보로 삭제하기로 투표했습니다. 참고 : 알려진 문제에주의하십시오. css3pie.com/documentation/known-issues
NateDSaint

2

IE9에 대해서는 확실하지 않지만 Opera는 아직 그라디언트를 지원하지 않는 것 같습니다.

해당 페이지에 "그라데이션"이 나타나지 않습니다.

Opera가 아닌 모든 브라우저에서 CSS 그래디언트가 작동하도록하는 Robert Nyman의 훌륭한 기사가 있습니다.

대체 이미지를 사용하도록 확장 할 수 있는지 확실하지 않습니다.


1
Opera는 일반적으로 표준 구현의 최전선에 있기 때문에 놀랍습니다. 대답 폴 감사합니다.
Sniffer

1
그래도 그래도 그래디언트가 표준으로 만들진 않았다고 생각합니다. 프로세스를 이해하면 새로운 CSS 기능이 브라우저에서 구현 된 다음 결국 표준으로 지정되는 경향이 있습니다. 저는 WebKit 팀이 처음으로 CSS에서 그라디언트를 구현했다고 믿습니다 ( filter내 책에서 실제로 CSS로 인정되지 않는 Microsoft와 그 제품을 고려하지 않는 한). 파이어 폭스는 이제 그들을 따랐지만 아직 W3C CSS 초안 사양에는 아무것도없는 것 같습니다 : google.co.uk/…
Paul D. Waite


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.