自动调整字体大小适用容器宽度

自动调整字体大小适用容器宽度

经常遇到标题里的内容不固定的情况,用三个点来兼容,效果还不是太完美,如果,文字太多,字符自动变小,就可以很完美的解决问题

1、首先我们需要有一个方法获取字符占用的宽度,通过字符的长度来计算肯定很不准,
正好canvas有这个方法measureText,需要指定字体
2、然后我们需要一个循环来不断的尝试 我们能用的最大字体是多少

ok 上代码


export  let AutoShrink ={
	getMaxFontSize:function (text,containerWidth,fontFamily,minSize,maxSize) {
		let canvas = document.createElement('canvas');
		let context = canvas.getContext('2d');
		minSize = minSize || 12;
		maxSize = maxSize || 50;

		for(var i=minSize;i<=maxSize;i++){
			context.font = i+"px "+fontFamily;
			let detail = context.measureText(text);
			let width = detail.width;
			if(width === containerWidth) {
				return i;
			}
			if(width>containerWidth) {
				return i-1;
			}
		}
		return i>maxSize?maxSize:i;
	},
	adjust:function (dom,options) {
		options = options || {};
		let text = dom.innerText;
		let containerWidth = parseInt(getComputedStyle(dom).width);
		let fontFamily = getComputedStyle(dom).fontFamily;
		let maxFontSize = this.getMaxFontSize(text,containerWidth,fontFamily,options.minSize,options.maxSize);
		dom.style.fontSize = maxFontSize+'px';
	}
};
export default AutoShrink;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
    <script src="../dist/auto-shrink.min.js"></script>
</head>

<style>
    #test {
        width: 800px;
        background-color: red;
        font-family: 微软雅黑, Arial, Helvetica, sans-serif;
    }
</style>


<body>
<div class="auto-shrink" id="test" style="">从前有座山,1233hahahh啊哈哈哈哈就啊哈哈啊哈对对是打发斯蒂芬对哈哈,阿看见爱上大路口甲方阿斯顿发的</div>
<script>
	AutoShrink.adjust(document.querySelector('#test'),{
		maxSize:200
    });
</script>
</body>
</html>

可以通过npm安装

npm i pingansec-auto-shrink
在C#中,如果你发现界面上某个元素(比如按钮、标签或文本框)的尺寸显示不全,可能是因为以下几个原因: 1. **布局管理器问题**:如果你使用的是Windows Forms的LayoutManager,比如FlowLayout或GridLayoutPanel等,检查控件的SizeMode属性是否设为了AutoSize,这可能导致它们根据内容自动调整大小,如果不是预期的结果,需要手动设置合适的大小。 2. **字体和文字大小**:如果控件的文字内容过长,超出控件本身的大小限制,可以尝试更改字体大小或换行处理。 3. **控件的初始大小设置**:确保在设计阶段或者代码中设置了正确的初始大小,特别是对于动态加载的内容,可能因为计算错误或数据问题导致尺寸不合适。 4. **边距和填充**:检查控件的Margin和Padding属性,过多的外边距或填充可能会影响控件的实际可见大小。 5. **控件Parent容器**:查看包含该控件的容器是否有合适的大小约束,如果容器没有足够大的空间,控件可能无法完全显示。 6. **显示异常**:有时可能是UI线程同步问题,确保所有绘制操作都在UI线程完成,避免可能导致渲染延迟的问题。 解决这类问题的一个常见做法是调试时直接查看控件的宽度和高度值,然后根据实际需求进行调整。 **相关问题--:** 1. 如何设置控件的初始大小以防止显示不全? 2. 控件的SizeMode属性有哪些选项,分别适用于什么情况? 3. 如何优化字体和文本处理以避免显示问题?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值