canvas如何自适应窗口大小
如何 大小 窗口 适应 Canvas
2023-09-27 14:25:57 时间
问题
layer弹出iframe的高度不自适应。一直是150px 通常,我们这样写没问题,但是,当我们需要页面加载后直接就弹出layer时,最常见应用场景就是注册页面加载后直接触发layer,弹出注册协议。 这时候问题来了,我们会发现 弹出的iframe的高度一直是150px,高度并不自适应。 经分析:原因就是layer计算ifram的时候,页面还没加载完全,而ifram本身就是通过页面的高度的进行计算的(因为我高度设置的80%)
WPF 窗口大小自适应 原文:WPF 窗口大小自适应 在设置桌面不同分辨率以及较大DPI下,窗口如何显示的问题。 方案一 设置窗口最大值和最小值显示 通过对比当前屏幕的可显示区域,将窗口高宽最大值和最小值,设置为窗口的实际高宽(此例中仅设置高度) 设置窗口内容自适应SizeToContent= WidthAndHeight 添加ViewBox -- 设置默认不拉伸Stretch= None ,当DPI超大时如超过1920*1080p的175%(即win10默认不支持的比例显示),开启ViewBox缩放 顶层布局容器RootGrid添加高宽最大值和最小值。
canvas的宽高不能用百分比来显示 如果想用canvas做一个图希望能够自适应窗口宽度怎么办。
正文这里我们先画了一个宽为canvas宽度的红色矩形 这样canvas如何变化自己的宽度 矩形都可以跟着改变。
!doctype html html lang en head meta charset UTF-8 / meta name viewport content width device-width, initial-scale 1.0 meta http-equiv X-UA-Compatible content IE edge,chrome 1 / title 页面名称 /title style type text/css /style /head body div style width: 100% id content canvas id box width 300 height 300 /canvas /div /body script /** type {HTMLCanvasElement} */ const canvas document.getElementById( box ) const ctx canvas.getContext( 2d ) const draw () { const { width } canvas ctx.fillStyle red //用canvas的宽长绘图 ctx.fillRect(0, 0, width, 50) draw() /script
我们希望这个红色的矩形作为网页顶部的导航。
那么它必须宽达到网页的百分百 那么我们可以把父级div的百分百宽度赋予给他。
!doctype html html lang en head meta charset UTF-8 / meta name viewport content width device-width, initial-scale 1.0 meta http-equiv X-UA-Compatible content IE edge,chrome 1 / title 页面名称 /title style type text/css /style /head body div style width: 100% id content canvas id box width 300 height 300 /canvas /div /body script /** type {HTMLCanvasElement} */ const canvas document.getElementById( box ) const ctx canvas.getContext( 2d ) const draw () { //获取父级宽度并赋值给canvas const contentWidth document.getElementById( content ).clientWidth canvas.width contentWidth const { width } canvas ctx.fillStyle red ctx.fillRect(0, 0, width, 50) draw() /script /html
看似达到了效果 但是当我们缩小页面时 发现了问题。
因为我们赋予canvas宽度时传入的是定值 而网页缩小时 canvas的宽度还是没有改变。
于是我们可以想到监听网页的缩放事件。
每次缩放都重新将重新改变canvas的宽度重新绘制。
!doctype html html lang en head meta charset UTF-8 / meta name viewport content width device-width, initial-scale 1.0 meta http-equiv X-UA-Compatible content IE edge,chrome 1 / title 页面名称 /title style type text/css /style /head body div style width: 100% id content canvas id box width 300 height 300 /canvas /div /body script /** type {HTMLCanvasElement} */ const canvas document.getElementById( box ) const ctx canvas.getContext( 2d ) const draw () { const contentWidth document.getElementById( content ).clientWidth canvas.width contentWidth const { width } canvas ctx.fillStyle red ctx.fillRect(0, 0, width, 50) draw() //窗口缩放事件 window.onresize function () { draw() /script /html
layer弹出iframe的高度不自适应。一直是150px 通常,我们这样写没问题,但是,当我们需要页面加载后直接就弹出layer时,最常见应用场景就是注册页面加载后直接触发layer,弹出注册协议。 这时候问题来了,我们会发现 弹出的iframe的高度一直是150px,高度并不自适应。 经分析:原因就是layer计算ifram的时候,页面还没加载完全,而ifram本身就是通过页面的高度的进行计算的(因为我高度设置的80%)
WPF 窗口大小自适应 原文:WPF 窗口大小自适应 在设置桌面不同分辨率以及较大DPI下,窗口如何显示的问题。 方案一 设置窗口最大值和最小值显示 通过对比当前屏幕的可显示区域,将窗口高宽最大值和最小值,设置为窗口的实际高宽(此例中仅设置高度) 设置窗口内容自适应SizeToContent= WidthAndHeight 添加ViewBox -- 设置默认不拉伸Stretch= None ,当DPI超大时如超过1920*1080p的175%(即win10默认不支持的比例显示),开启ViewBox缩放 顶层布局容器RootGrid添加高宽最大值和最小值。
相关文章
- “3+3”看华为云FusionInsight如何引领“数据新基建”持续发展
- PrestaShop 1.7 中的 Size 如何配置
- Windows系统如何更改任务栏缩略图的大小
- 复杂性将如何影响大数据部署
- Linux目录结构、Linux分区大小、挂载点和如何分区
- 修改ibdata1大小的验证以及如何使用mysqld_multi管理多实例
- 如何选择合适的企业移动性管理工具
- 微服务架构如何避免大规模故障?
- 到底如何设置 Java 线程池的大小?
- 如何在CentOS 7部署RabbitMQ服务
- 如何删除Safari浏览器的扩展程序 大神教你搞定
- 程序员人生:如何开始,如何入门,如何前进
- 如何合理设置线程池大小
- linux下如何查看和修改系统BLOCK的大小
- mysql timestamp如何比较大小,查询范围
- BI 是如何数据分析的?
- 如何更改Jframe里Jpanel的大小
- 如何调整 php 应用的上传附件大小?
- 如何把大的‘tar‘存档文件分割成特定大小的多个文件
- 如何重新划分linux分区大小
- 看CoreOS的联合创始人如何谈论容器,Rocket 以及 Docker
- 如何做到“恰好一次”地传递数十亿条消息
- Nginx如何保留真实IP和获取前端IP
- C-sizeof和strlen区别,以及sizeof如何计算结构体大小
- MYSQL如何导出存储过程和触发器?