Javascript 基于html长度调整字体大小
我知道有很多类似的帖子,但到目前为止我还没能解决这个问题 上下文:Javascript 基于html长度调整字体大小,javascript,jquery,css,font-size,Javascript,Jquery,Css,Font Size,我知道有很多类似的帖子,但到目前为止我还没能解决这个问题 上下文: 用户选择一个家, 家庭有独特的头衔, 根据标题,调整字体大小以防止溢出 JS小提琴: 字体大小是根据html的长度,但我需要这是反应。我尝试创建.on(“更改”)事件,但未能正确实现。帮忙 现在我正在从控制台更新标题, $('#title').html(“大而长的描述物”) 但是,这将在将来通过从模式菜单中选择来完成。EDIT 好的,现在我明白了。你的JS应该是这样的: $(function() { $('#title'
用户选择一个家,
家庭有独特的头衔,
根据标题,调整字体大小以防止溢出 JS小提琴: 字体大小是根据html的长度,但我需要这是反应。我尝试创建.on(“更改”)事件,但未能正确实现。帮忙 现在我正在从控制台更新标题,
$('#title').html(“大而长的描述物”)代码>
但是,这将在将来通过从模式菜单中选择来完成。EDIT
好的,现在我明白了。你的JS应该是这样的:
$(function() {
$('#title').on('DOMSubtreeModified', function() {
var title = $('#title'),
planName = title.html().length;
// depending on html length, update font-size
if(planName > 30) {
title.css('font-size', '10px');
} else if(planName > 20) {
title.css('font-size', '12px');
} else if(planName > 10) {
title.css('font-size', '15px');
}
});
$('li').on('click', function() {
$('#title').text( $(this).text() );
});
});
每当元素的内容发生更改时(因为这会修改DOM子树),DOMSubtreeModified应该激发。“点击”部分不是必需的,但我保留它用于测试目的
根据,Opera不支持此活动,IE 9及以下版本可能不支持或有缺陷
有关更多选项和信息,请查看以下其他StackOverflow问题:
根据您所说,用户将“选择一个单元”:
用例:
用户选择一个单元,
单位有独特的名称,
根据标题,调整字体大小以防止溢出
因此,作为此操作的一部分,您需要更改字体大小。我用你的代码做了一个例子:
HTML
试着点击列表中的图标。看到了吗?作为对“更改单元”的响应,标题和字体大小会更改
如果此答案对您没有帮助,请提供更多详细信息。编辑
好的,现在我明白了。你的JS应该是这样的:
$(function() {
$('#title').on('DOMSubtreeModified', function() {
var title = $('#title'),
planName = title.html().length;
// depending on html length, update font-size
if(planName > 30) {
title.css('font-size', '10px');
} else if(planName > 20) {
title.css('font-size', '12px');
} else if(planName > 10) {
title.css('font-size', '15px');
}
});
$('li').on('click', function() {
$('#title').text( $(this).text() );
});
});
每当元素的内容发生更改时(因为这会修改DOM子树),DOMSubtreeModified应该激发。“点击”部分不是必需的,但我保留它用于测试目的
根据,Opera不支持此活动,IE 9及以下版本可能不支持或有缺陷
有关更多选项和信息,请查看以下其他StackOverflow问题:
根据您所说,用户将“选择一个单元”:
用例:
用户选择一个单元,
单位有独特的名称,
根据标题,调整字体大小以防止溢出
因此,作为此操作的一部分,您需要更改字体大小。我用你的代码做了一个例子:
HTML
试着点击列表中的图标。看到了吗?作为对“更改单元”的响应,标题和字体大小会更改
如果此答案对您没有帮助,请提供更多详细信息。编辑
好的,现在我明白了。你的JS应该是这样的:
$(function() {
$('#title').on('DOMSubtreeModified', function() {
var title = $('#title'),
planName = title.html().length;
// depending on html length, update font-size
if(planName > 30) {
title.css('font-size', '10px');
} else if(planName > 20) {
title.css('font-size', '12px');
} else if(planName > 10) {
title.css('font-size', '15px');
}
});
$('li').on('click', function() {
$('#title').text( $(this).text() );
});
});
每当元素的内容发生更改时(因为这会修改DOM子树),DOMSubtreeModified应该激发。“点击”部分不是必需的,但我保留它用于测试目的
根据,Opera不支持此活动,IE 9及以下版本可能不支持或有缺陷
有关更多选项和信息,请查看以下其他StackOverflow问题:
根据您所说,用户将“选择一个单元”:
用例:
用户选择一个单元,
单位有独特的名称,
根据标题,调整字体大小以防止溢出
因此,作为此操作的一部分,您需要更改字体大小。我用你的代码做了一个例子:
HTML
试着点击列表中的图标。看到了吗?作为对“更改单元”的响应,标题和字体大小会更改
如果此答案对您没有帮助,请提供更多详细信息。编辑
好的,现在我明白了。你的JS应该是这样的:
$(function() {
$('#title').on('DOMSubtreeModified', function() {
var title = $('#title'),
planName = title.html().length;
// depending on html length, update font-size
if(planName > 30) {
title.css('font-size', '10px');
} else if(planName > 20) {
title.css('font-size', '12px');
} else if(planName > 10) {
title.css('font-size', '15px');
}
});
$('li').on('click', function() {
$('#title').text( $(this).text() );
});
});
每当元素的内容发生更改时(因为这会修改DOM子树),DOMSubtreeModified应该激发。“点击”部分不是必需的,但我保留它用于测试目的
根据,Opera不支持此活动,IE 9及以下版本可能不支持或有缺陷
有关更多选项和信息,请查看以下其他StackOverflow问题:
根据您所说,用户将“选择一个单元”:
用例:
用户选择一个单元,
单位有独特的名称,
根据标题,调整字体大小以防止溢出
因此,作为此操作的一部分,您需要更改字体大小。我用你的代码做了一个例子:
HTML
试着点击列表中的图标。看到了吗?作为对“更改单元”的响应,标题和字体大小会更改
如果这个答案对您没有帮助,请提供更多详细信息。我可能会结合一些CSS来防止文本被包装,然后我会使用一些脚本来测量渲染文本的长度。如果它比预先确定的最大宽度长,请使用脚本应用CSS转换
#title {
white-space: nowrap;
display: inline-block; /* necessary for the scale to actually work */
transform-origin: 0% 100%; /* set transform origin to bottom left corner of the title element */
}
.maxwidth-container {
width: 400px;
}
然后在脚本中:
var scaleTitle = function() {
var $title = $("#title");
var maxWidth = $(".maxwidth-container").width();
$title.css("transform","scale(1,1)"); //reset to normal scale in order to measure natural width
if ($title.width() > maxWidth) {
var scaleAmt = maxWidth / $title.width();
$title.css("transform" , "scale(" + scaleAmt + "," + scaleAmt + ")");
}
};
在您的例子中,我将您的#title
元素包装在一个容器中,该容器指定了最大大小,但您可以使用一个显式的设置量
每次用户选择家庭时调用此函数
示例如下:
我可能会结合一些CSS来防止文本被包装,然后我会使用一些脚本来测量渲染文本的长度。如果它比预先确定的最大宽度长,请使用脚本应用CSS转换
#title {
white-space: nowrap;
display: inline-block; /* necessary for the scale to actually work */
transform-origin: 0% 100%; /* set transform origin to bottom left corner of the title element */
}
.maxwidth-container {
width: 400px;
}
然后在脚本中:
var scaleTitle = function() {
var $title = $("#title");
var maxWidth = $(".maxwidth-container").width();
$title.css("transform","scale(1,1)"); //reset to normal scale in order to measure natural width
if ($title.width() > maxWidth) {
var scaleAmt = maxWidth / $title.width();
$title.css("transform" , "scale(" + scaleAmt + "," + scaleAmt + ")");
}
};
在您的例子中,我将您的#title
元素包装在一个容器中,该容器指定了最大大小,但您可以使用一个显式的设置量
每次用户选择家庭时调用此函数
示例如下:
我可能会结合一些CSS来防止文本被包装,然后我会使用一些脚本来测量渲染文本的长度。如果它比预先确定的最大宽度长,请使用脚本应用CSS转换
#title {
white-space: nowrap;
display: inline-block; /* necessary for the scale to actually work */
transform-origin: 0% 100%; /* set transform origin to bottom left corner of the title element */
}
.maxwidth-container {
width: 400px;
}
然后在脚本中:
var scaleTitle = function() {
var $title = $("#title");
var maxWidth = $(".maxwidth-container").width();
$title.css("transform","scale(1,1)"); //reset to normal scale in order to measure natural width
if ($title.width() > maxWidth) {
var scaleAmt = maxWidth / $title.width();
$title.css("transform" , "scale(" + scaleAmt + "," + scaleAmt + ")");
}
};
在您的情况下,我将您的#title
元素包装在一个c中