私が必要としているものに完全に対応するものを使用したいのwidth: calc(100% -100px);
ですが、唯一の問題はその互換性です。現時点では、最新のブラウザでのみ機能し、Safari ではまったく機能しません。
jQuery を使用して別の方法を作成できますか? すなわち。オブジェクトの 100% 幅 -100px を取得し、結果を CSS 幅として動的に設定します (レスポンシブになります)。
If you have a browser that doesn't support the calc
expression, it's not hard to mimic with jQuery:
$('#yourEl').css('width', '100%').css('width', '-=100px');
It's much easier to let jQuery handle the relative calculation than doing it yourself.
これは別の方法かもしれないと思います
var width= $('#elm').width();
$('#element').css({ 'width': 'calc(100% - ' + width+ 'px)' });
100%-100px は同じ
div.thediv {
width: auto;
margin-right:100px;
}
jQuery の場合:
$(window).resize(function(){
$('.thediv').each(function(){
$(this).css('width', $(this).parent().width()-100);
})
});
同様の方法は、jQuery resize プラグインを使用することです
jQueryanimate()
メソッドを試してみてください。
$("#divid").animate({'width':perc+'%'});
JavaScriptで複製するのはそれほど難しくありません:-)、幅と高さでのみ最適に機能しますが、期待どおりに拡張できます:-)
function calcShim(element,property,expression){
var calculated = 0;
var freed_expression = expression.replace(/ /gi,'').replace("(","").replace(")","");
// Remove all the ( ) and spaces
// Now find the parts
var parts = freed_expression.split(/[\*+-\/]/gi);
var units = {
'px':function(quantity){
var part = 0;
part = parseFloat(quantity,10);
return part;
},
'%':function(quantity){
var part = 0,
parentQuantity = parseFloat(element.parent().css(property));
part = parentQuantity * ((parseFloat(quantity,10))/100);
return part;
} // you can always add more units here.
}
for( var i = 0; i < parts.length; i++ ){
for( var unit in units ){
if( parts[i].indexOf(unit) != -1 ){
// replace the expression by calculated part.
expression = expression.replace(parts[i],units[unit](parts[i]));
break;
}
}
}
// And now compute it. though eval is evil but in some cases its a good friend.
// Though i wish there was math. calc
element.css(property,eval(expression));
}