cssHooks - рдмрд╣реБрдд рд╕реАрдПрд╕рдПрд╕ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ jQuery.cssHooks рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ jQuery рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЖрдкрдХреЛ .css () рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирдП рдЧреБрдгреЛрдВ рдпрд╛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рд╢рд╛рдпрдж рдХрдИ рд╕реАрдПрд╕рдПрд╕ рд╣реБрдХ рдХреЗ рд▓рд┐рдП рдЦрдмрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЦреЛрдЬ рдереАред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ, рдореИрдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реВрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк jQuery рдореЗрдВ chuck-norris CSS рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
$.cssHooks.chuckNorris = { get: function(elem) { //    elem,  value return value; }, set: function(elem, value) { //    elem,  value } } $(el).css('chuck-norris', Infinity); // $(el).css({'chuck-norris': Infinity}); alert($(el).css('chuck-norris')); //Infinity 


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдИрдИ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЖрд░рдЬреАрдмреАрдП рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐-рд░рдВрдЧ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ "рд╕рдВрд╢реЛрдзрди" рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рдирдИ рдкреГрд╖реНрдарднреВрдорд┐-рдЕрд▓реНрдлрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд░рдВрдЧ рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред IE рдореЗрдВ, рд░рдВрдЧ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддрддреНрд╡ рдореЗрдВ рджреЛ рд╕рдорд╛рди рд░рдВрдЧреЛрдВ рдХрд╛ рдПрдХ рдврд╛рд▓ рдЬреЛрдбрд╝рдХрд░ред

рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рджреЛ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдСрдЯреЛ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╣реИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
 $('div').width('100%'); 

рджреВрд╕рд░реЗ, рдлрд╝рд┐рд▓реНрдЯрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐рдпреЛрдВ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдЧрдзреЗ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд (рдкрд╣рд▓реА рддрд╕реНрд╡реАрд░) рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдпрд╣ (рджреВрд╕рд░реА рддрд╕реНрд╡реАрд░) рдорд┐рд▓рддреА рд╣реИред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди (parseColor) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рд░рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рд╡рд╕реНрддреБ {r, g, b, a} рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдЗрд╕ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдХреЛрдб (рдЬреЛ рдЖрдХрд╛рд░ рдХреЗ рдХрд╛рд░рдг рдЬрдЧрд╣ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдЧрд╛) рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд┐рдЪрд╛рд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рд╕реЗ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд╣реИ ред

рджреВрд╕рд░рд╛ рдЪрд░рдг рдХрд▓рд░ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдирд╛ рд╣реИ, рдЬреЛ рдПрдХ html рдиреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
 var Color = function(el){ //     : //   IE8-,      ,     var ieDetect = (function(){ var ua = navigator.userAgent; var result = {} result.isOldIe = ~ua.indexOf('MSIE 6') || ~ua.indexOf('MSIE 7') || ~ua.indexOf('MSIE 8'); result.hasGradient = result.isOldIe && ~el.style.filter.toLowerCase().indexOf('gradient'); result.isGradientEnabled = result.hasGradient && !!el.filters.item("DXImageTransform.Microsoft.gradient").enabled; return result; })(); //          var colorToHex = function (objColor) { var hex = {}; for (var i in objColor) { hex[i] = objColor[i]; if (i==='a') { hex.a = Math.round(hex.a*255); } hex[i] = hex[i].toString(16); // '0',        hex[i] = hex[i].length == 2 ? hex[i] : '0' + hex[i]; } return hex; } //  {r,g,b,a}      var colorToString = function(objColor, format) { var hexColor = colorToHex(objColor); switch(format) { case 'rgb': return 'rgb(' + objColor.r + ',' + objColor.g + ',' + objColor.b + ')'; case 'rgba': return 'rgba(' + objColor.r + ',' + objColor.g + ',' + objColor.b +',' + objColor.a + ')'; case '#6': return '#' + hexColor.r + hexColor.g + hexColor.b; case '#8': return '#' + hexColor.a + hexColor.r + hexColor.g + hexColor.b; } } //      var convertColor = function(color, format) { var colorObj = parseColor(color); return colorToString(colorObj, format) } //  getComputedStyle    //  ,  if (!window.getComputedStyle) { window.getComputedStyle = function(el, pseudo) { this.el = el; this.getPropertyValue = function(prop) { var re = /(\-([az]){1})/g; if (re.test(prop)) { prop = prop.replace(re, function () { return arguments[2].toUpperCase(); }); } return el.currentStyle[prop] ? el.currentStyle[prop] : null; } return this; } } ... 


рдЕрдм рдЪрд▓реЛ рд╕реНрд╡рдпрдВ рд░рдВрдЧ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрд╛рдардХ рдХреЛ рдЗрд╕рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реЛрдЧреАред
 this.setBackgroundColor = function(color) { var newColor, newColorObj = parseColor(color); if(ieDetect.isOldIe) { //  IE if(newColorObj.a < 1) { //     el.style.backgroundColor = 'transparent'; newColor = colorToString(newColorObj, '#8'); if(ieDetect.hasGradient) { //     el.filters.item("DXImageTransform.Microsoft.gradient").enabled = true; el.filters.item("DXImageTransform.Microsoft.gradient").startColorstr = newColor; el.filters.item("DXImageTransform.Microsoft.gradient").endColorstr = newColor; } else { //     el.style.filter += "progid:DXImageTransform.Microsoft.gradient(enabled='true', startColorstr=" + newColor + ", endColorstr=" + newColor + ")"; } } else { //     newColor = colorToString(newColorObj, '#6'); if(ieDetect.hasGradient) { //     el.filters.item("DXImageTransform.Microsoft.gradient").enabled = false; el.style.backgroundColor = newColor; } else { //     el.style.backgroundColor = newColor; } } } else { //   IE if(newColorObj.a < 1) { //     newColor = colorToString(newColorObj, 'rgba'); el.style.backgroundColor = newColor; } else { //     newColor = colorToString(newColorObj, '#6'); el.style.backgroundColor = newColor; } } } 


рд░рдВрдЧ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдЕрдЧрд▓рд╛ рднрд╛рдЧ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
 this.getBackgroundColor = function() { var color; if(ieDetect.isGradientEnabled) { //  IE    color = el.filters.item("DXImageTransform.Microsoft.gradient").startColorstr; return convertColor(color, 'rgba'); } else { //  : http://snipplr.com/view/13523/getcomputedstyle-for-ie/ //      $(el).css('background-color'); //    ,     color = el.style.BackgroundColor || window.getComputedStyle(el,null).getPropertyValue('background-color'); return color; } } 


рдЕрдм рдореБрдЦреНрдп рднрд╛рдЧред рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдбрд░реЙрдХрд░ рд╣реБрдХ рдЬреЛрдбрд╝реЗрдВред
 $.cssHooks.backgroundColor = { get: function(elem) { var color = new Color(elem); return color.getBackgroundColor(); }, set: function( elem, value ) { var color = new Color(elem); color.setBackgroundColor(value); } } 


рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдЬреЛрдбрд╝реЗрдВ рд╣реБрдХ
 $.cssHooks.backgroundAlpha = { get: function(elem) { var color = new Color(elem); var colorStr = color.getBackgroundColor(); var colorObj = parseColor(colorStr); return colorObj.a; }, set: function(elem, value) { var color = new Color(elem); var colorStr = color.getBackgroundColor(); var colorObj = parseColor(colorStr); //    ,  jQuery  'px';  colorObj.a = String(value).replace('px', ''); color.setBackgroundColor('rgba('+ colorObj.r+','+colorObj.g+','+colorObj.b+','+colorObj.a+')'); } } 


рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдм рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
 p{background-color: #991111; ...} div{background: url(...) ...} 

 <div> <p>...</p> <p>...</p> </div> 

 $('p').width('100%'); $('p:eq(0)').css({'background-color':'rgba(0,111,221,0.9)'}); $('p:eq(1)').css('background-alpha', 0.5); 


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, "рдКрдВрдЯ рдорд╛рдорд▓реЗ" рд╢реИрд▓реА рдореЗрдВ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, jQuery рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "рд╣рд╛рдЗрдлрд╝рди" рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖

рдпрджрд┐ рдЖрдк рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд (рдпрд╛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд) рдХреБрдЫ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рднреВрд▓ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдкреНрд▓рдЧ-рдЗрди рдмрдирд╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, $ .cssHooks рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╕рдВрджрд░реНрдн:
рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг: finom.ho.ua/bgalpha
рд▓реЗрдЦ рд╕реЗ рд╣реБрдХ рдХреЛрдб: finom.ho.ua/bgalpha/background-rgba.csshook.jquery.js
рд╡реИрдХрд▓реНрдкрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ cssHooks : jqapi.com/#p=jQuery.cssHooks

Source: https://habr.com/ru/post/In123241/


All Articles