Я применяю текстовый водяной знак для умножения изображений, и я хочу отображать масштабирование текста. Я увеличиваю font-size
соответствии с div, увеличивая div, а также текст в них, это то, что я делаю jsfiddle
$(document).ready(function () {
//vertically enlarge div and font-size
$('#vertically').on('change', function() {
ScaValue = this.value;
OriginalHeight = $("#backgroundImg").height();
var newHeightofDiv = (OriginalHeight/100) * ScaValue;
fontsize = newHeightofDiv/10;
$("#dragable").css({"width":"auto","height":newHeightofDiv,"font-size":fontsize});
});
//horizontally enlarge div and font-size
$('#horizontally').on('change', function() {
ScaValue = this.value;
Originalwidth = $("#backgroundImg").width();
var newWidthofDiv = (Originalwidth/100) * ScaValue;
fontsize = newWidthofDiv/10;
$("#dragable").css({"width":newWidthofDiv,"height":"auto","font-size":fontsize});
});
});
Вышеприведенный код работает отлично в случае горизонтального масштабирования, но не получает точного масштабирования в случае вертикального масштабирования. Пожалуйста, укажите мне в правильном направлении
Вы можете использовать плагин jquery resize для вызова события div resize. Вы получите этот плагин из следующей ссылки:
http://benalman.com/projects/jquery-resize-plugin/
Я проверяю масштаб изменения высоты, вычитая currentHeight с предыдущей высоты. Для этого я удалил значение 'px' из аргумента height. Тогда, если это увеличение размера, то я увеличу размер шрифта в аналогичном соотношении в соответствии со скоростью изменения высоты, в противном случае я уменьшу размер шрифта.
Но при этом были некоторые проблемы. Когда я изменил размер шрифта, он также изменил размер div, поэтому он снова назвал событие изменения размера и стал бесконечным циклом. Поэтому я использовал одну логическую переменную с именем resi (сокращение от изменения размера), и когда размер шрифта сделан, я установил его в true, поэтому в следующий раз, когда я вызову метод изменения размера, он пропустит выполнение функции
<html>
<head>
</head>
<body>
<div id="mydiv" style="min-height:300px;font-size:23px;border:solid 2px black;">
Hai I am Akhil
<div id="inner" style='height:200px;border:solid 2px red;'></div>
</div>
</div>
<input type="button" id="check" value="Increase"/>
<input type="button" id="down" value="Decrease"/>
<script src="jquery-1.11.1.js"></script>
<script src="jquery-resize.js"></script>
<script>
var height=$("#mydiv").css("height");
height=height.substring(0,(height.length-2));
var font=$("#mydiv").css("font-size");
var resi=false;
$("#mydiv").resize(function(){
if(resi){
var currentHeight=$("#mydiv").css("height");
currentHeight= currentHeight.substring(0,(currentHeight.length-2));
var change=currentHeight-height;
height=currentHeight;
if(change>0){
var currentFont=$("#mydiv").css("font-size");
font=currentFont;
currentFont= currentFont.substring(0,(currentFont.length-2));
$("#mydiv").css("font-size", ((currentFont*(change/100))+"px"));
resi=false;
}else if(change<0){
change=change*-1;
var currentFont=$("#mydiv").css("font-size");
font=currentFont;
currentFont= currentFont.substring(0,(currentFont.length-2));
$("#mydiv").css("font-size", ((currentFont/(change/100))+"px"));
resi=false;
}
}
});
$("#check").click(function(){
$("#inner").css("height","600px");
resi=true;
});
$("#down").click(function(){
$("#inner").css("height","400px");
resi=true;
});
</script>
</html>
Я дал 2 кнопки для увеличения и уменьшения размера div. Если у вас есть какие-либо сомнения, вы можете спросить.
font-size:10%
в CSS?em
, который автоматически масштабируется доline-height
.