clip-path:shape()
dường như không hoạt động trong IE (không có gì ngạc nhiên) và Firefox (hơi ngạc nhiên). Có cách nào để kiểm tra hỗ trợ clip-path không? Tôi sử dụng modernizr. (Nhân tiện, tôi biết tôi có thể làm việc này bằng cách sử dụng SVG và -webkit-clip-path:url(#mySVG)
)Tôi làm cách nào để thử nghiệm hỗ trợ clip-path?
Trả lời
Bạn đã hỏi điều này một thời gian trước đây, và thành thật mà nói, tôi không chắc liệu Modernizr chưa thêm hỗ trợ cho điều này, nhưng nó khá dễ dàng để cuộn thử nghiệm của riêng bạn trong trường hợp này.
Các bước thực hiện:
- Tạo, nhưng không thêm, một phần tử DOM.
- Kiểm tra xem nó có hỗ trợ bất kỳ loại ClipPath nào không bằng cách kiểm tra thuộc tính JS
style
của phần tử mới được tạo (element.style.clipPath === ''
nếu nó có thể hỗ trợ nó). - Kiểm tra xem nó có hỗ trợ hình dạng đường dẫn clip CSS hay không bằng cách tạo
element.style.clipPath
bằng một số hình dạng đường dẫn clip CSS hợp lệ.
Tất nhiên, nó phức tạp hơn một chút so với khi bạn phải kiểm tra tiền tố của nhà cung cấp cụ thể.
Dưới đây là tất cả với nhau:
var areClipPathShapesSupported = function() {
var base = 'clipPath',
prefixes = [ 'webkit', 'moz', 'ms', 'o' ],
properties = [ base ],
testElement = document.createElement('testelement'),
attribute = 'polygon(50% 0%, 0% 100%, 100% 100%)';
// Push the prefixed properties into the array of properties.
for (var i = 0, l = prefixes.length; i < l; i++) {
var prefixedProperty = prefixes[i] + base.charAt(0).toUpperCase() + base.slice(1); // remember to capitalize!
properties.push(prefixedProperty);
}
// Interate over the properties and see if they pass two tests.
for (var i = 0, l = properties.length; i < l; i++) {
var property = properties[i];
// First, they need to even support clip-path (IE <= 11 does not)...
if (testElement.style[property] === '') {
// Second, we need to see what happens when we try to create a CSS shape...
testElement.style[property] = attribute;
if (testElement.style[property] !== '') {
return true;
}
}
}
return false;
};
Dưới đây là một bằng chứng-of-concept codepen: http://codepen.io/anon/pen/YXyyMJ
Điều này sẽ được thêm vào modernizr. Tôi đã thử nghiệm trong IE và phát hiện chính xác rằng đường dẫn clip svg không được hỗ trợ (trên các phần tử HTML). Cảm ơn! – Markus
Bạn có thể thử nghiệm với Modernizr.
(function (Modernizr) {
// Here are all the values we will test. If you want to use just one or two, comment out the lines of test you don't need.
var tests = [{
name: 'svg',
value: 'url(#test)'
}, // False positive in IE, supports SVG clip-path, but not on HTML element
{
name: 'inset',
value: 'inset(10px 20px 30px 40px)'
}, {
name: 'circle',
value: 'circle(60px at center)'
}, {
name: 'ellipse',
value: 'ellipse(50% 50% at 50% 50%)'
}, {
name: 'polygon',
value: 'polygon(50% 0%, 0% 100%, 100% 100%)'
}
];
var t = 0, name, value, prop;
for (; t < tests.length; t++) {
name = tests[t].name;
value = tests[t].value;
Modernizr.addTest('cssclippath' + name, function() {
// Try using window.CSS.supports
if ('CSS' in window && 'supports' in window.CSS) {
for (var i = 0; i < Modernizr._prefixes.length; i++) {
prop = Modernizr._prefixes[i] + 'clip-path'
if (window.CSS.supports(prop, value)) {
return true;
}
}
return false;
}
// Otherwise, use Modernizr.testStyles and examine the property manually
return Modernizr.testStyles('#modernizr { ' + Modernizr._prefixes.join('clip-path:' + value + '; ') + ' }', function (elem, rule) {
var style = getComputedStyle(elem),
clip = style.clipPath;
if (!clip || clip == "none") {
clip = false;
for (var i = 0; i < Modernizr._domPrefixes.length; i++) {
test = Modernizr._domPrefixes[i] + 'ClipPath';
if (style[test] && style[test] !== "none") {
clip = true;
break;
}
}
}
return Modernizr.testProp('clipPath') && clip;
});
});
}
})(Modernizr);
Check this codepen để xem nó hoạt động.
Điều này thật tuyệt vời, cảm ơn bạn! Bạn đã tìm ra cách để tránh dương tính giả cho IE trên URL clip-đường dẫn cho các phần tử HTML? –
- 1. Thử nghiệm Mocha ES6 được hỗ trợ?
- 2. Làm cách nào để thêm gem 'minitest' vào trình trợ giúp thử nghiệm của tôi?
- 3. Tôi làm cách nào để thử nghiệm setResult() trong thử nghiệm Android Espresso?
- 4. Tôi làm cách nào để thử nghiệm $ scope. $ Trên sự kiện trong thử nghiệm Jasmine?
- 5. Tôi làm cách nào để thử nghiệm phát triển GWT?
- 6. Có kế hoạch nào để Microsoft hỗ trợ các khuôn khổ thử nghiệm ngoài MSTest không?
- 7. Làm thế nào để thử đối tượng yêu cầu cho các thử nghiệm trợ giúp rspec?
- 8. Làm cách nào để chạy thử nghiệm cụ thể bằng cách sử dụng thử nghiệm dotnet?
- 9. Làm cách nào để phát hiện hỗ trợ `focusin`?
- 10. Tái cấu trúc thử nghiệm TDD để hỗ trợ đa luồng
- 11. Làm cách nào để Mix chỉ chạy các thử nghiệm cụ thể từ bộ thử nghiệm của tôi?
- 12. Làm cách nào để tắt thông báo [không có tệp thử nghiệm] khi thử nghiệm
- 13. Làm thế nào để bạn thử nghiệm?
- 14. Tôi làm cách nào để cấu hình ứng dụng được hỗ trợ bởi SQLAlchemy?
- 15. Tôi làm cách nào để định cấu hình studio trực quan để chạy thử nghiệm xUnit.net?
- 16. Tôi làm cách nào để tạo AVD để thử nghiệm trên máy tính bảng?
- 17. Làm cách nào để lấy MSTest để tìm các tệp dữ liệu thử nghiệm của tôi?
- 18. Tôi làm cách nào để hỗ trợ kích thước màn hình iPhone 5 cao hơn?
- 19. Làm cách nào để thử nghiệm không nhàm chán?
- 20. Làm cách nào để chạy thử nghiệm tích hợp?
- 21. Làm cách nào để thử nghiệm phạm vi $. $ Trên AngularJS
- 22. Làm cách nào để TeamCity chạy thử nghiệm bằng MSTest?
- 23. Làm cách nào để thử nghiệm tích hợp?
- 24. Làm cách nào để bật hỗ trợ PHP trong Netbeans?
- 25. Làm cách nào để bật hỗ trợ https trong libcurl?
- 26. Làm cách nào để hỗ trợ CSS3 cho IE?
- 27. Làm cách nào để hỗ trợ nhiều loại tùy chỉnh?
- 28. Làm cách nào để Tkinter hỗ trợ PNG trong suốt?
- 29. Làm cách nào để thêm hỗ trợ FTP vào Eclipse?
- 30. Làm cách nào để có được Karma để chạy các tệp thử nghiệm này?
hahahah .... IE và Firefox không phải là webkit ... webkit chỉ được hỗ trợ trên - đợi cho nó - trình duyệt webkit. Đó là, Chrome (pre-Blink) và Safari. Ngoài ra, tôi không có câu trả lời hữu ích. * nhún vai * – philtune
Có vui. Tôi nên nói "clip-path" chứ không phải webkit. Tuy nhiên, tôi không thể nhìn thấy một cách để kiểm tra trình duyệt cho hỗ trợ clip-path. –
Googled ... tìm thấy http: //modernizr.com/docs/#features-misc ... điều đó có hữu ích không? – philtune