sizebox模型下载_css 盒模型、box-sizing 学习笔记

默认情况下,给元素设置的高度和宽度是元素内容区的宽度和高度,给元素加padding 和 border ,元素的实际宽度和高度的计算方式是下面的两个公式:

元素的宽度= 元素的内容区宽度 + 内边距宽度 + 边框宽度;

元素的高度= 元素的内容区高度 + 内边距高度 + 边框高度;

别人说过的话,你记住了,时间久了你就会忘记了,为了加深记忆,这里亲自验证,并记录下验证过程,方便下次复习使用。验证结论我们先给处一张标准的盒模型

如上图盒模型示例:元素是绝对定位的,上右下左均是0px,内容宽度420px, 加上左右内边距各10px,加上左右边框 各10px,元素的宽是460px;

验证结论,我们给盒子加一个父盒子:

1、设置宽度为420px,overflow设置为自动,子盒子的宽度会超出父盒子内容区的宽度,父盒子出现横向的滚动条;

2、设置宽度为460px,overflow设置为自动,子盒子的宽度不会超出父盒子内容区的宽度,父盒子不出现横向的滚动条;

如果以上两点成立,则结论是正确的。

效果看下面两张图片:

从上面的两张图上我们可以看出,我们的结论是正确的,即,元素的宽度= 元素的内容区宽度 + 内边距宽度 + 边框宽度;

我们可以用同样的方法验证:元素的高度= 元素的内容区高度 + 内边距高度 + 边框高度;当然本人是亲自验证过的,这里不再给出高度的截图了,贴出源码,有兴趣的可以自行验证一下,加深记录。

源码如下:

Title

*{margin:0;padding:0px;

}html,body{height:100%;overflow:hidden;

}#wrapper{height:100%;overflow:auto;

}#demo-parent{position:absolute;top:0px;left:0px;bottom:0px;right:0px;margin:auto;background-color:pink;width:460px;height:250px;overflow:auto;

}

/*居中定位*/#demo{position:absolute;top:0px;left:0px;bottom:0px;right:0px;margin:auto;width:420px;height:200px;font-family:"楷体";font-size:24px;line-height:40px;text-align:center;font-weight:bold;color:black;background-color:#cccccc;padding:10px;border:solid 10px #c3c3c3;

/*box-sizing: border-box;*/

}

红军不怕远征难,

万水千山只等闲。

五岭逶迤腾细浪,

乌蒙磅礴走泥丸。

金沙水拍云崖暖,

大渡桥横铁索寒。

更喜岷山千里雪,

三军过后尽开颜。

这行代码`IStyle &= ~WS_SIZEBOX;`是一个用于改变窗口风格(style)的操作,`WS_SIZEBOX`是Windows标准样式常量,表示允许用户通过鼠标调整窗口的大小。`~WS_SIZEBOX`取反操作符表示移除这个标志,因此窗口将禁用原生的大小调整功能。 如果你想保留窗口可以调整大小的特性,但限制它的最大或最小尺寸,你可以采取以下方法: 1. **设置最小和最大宽度、高度**: 在Windows API中,可以在窗口创建时设置`CreateWindowEx()`函数的`LWS_MINIMIZEBOX`和`LWS_MAXIMIZEBOX`标志,然后通过`SetWindowPos()`函数手动设定窗口的最大和最小边界。 ```cpp int x, y, cx, cy; GetWindowRect(hwnd, &x, &y, &cx, &cy); SetWindowPos(hwnd, HWND_TOP, x, y, min_width, min_height, SWP_NOZORDER | SWP_NOACTIVATE); SetWindowPos(hwnd, HWND_TOP, x, y, max_width, max_height, SWP_NOZORDER | SWP_NOACTIVATE); ``` 这里,`hwnd`是窗口句柄,`min_width`和`min_height`是你想要设置的最小尺寸,`max_width`和`max_height`则是最大尺寸。 2. **监听窗口尺寸变化**: 使用窗口消息`WM_SIZE`来处理用户尝试调整窗口大小的行为,并在回调函数中检查新尺寸是否超出限制,如果超出则阻止调整。 ```cpp case WM_SIZE: { int width = LOWORD(lParam); int height = HIWORD(lParam); if (width < min_width || width > max_width || height < min_height || height > max_height) { MoveWindow(hwnd, x, y, min_width, min_height, FALSE); } break; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值