如何让height:100%起作用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34893429/article/details/73554719

首先要了解浏览器是如何计算高度和宽度的。

Web浏览器在计算有效宽度时会考虑浏览器窗口的打开宽度。如果你不给宽度设定任何缺省值,那浏览器会自动将页面内容平铺填满整个横向宽度。

但是高度的计算就完全不同了,事实上,浏览器根本就不计算内容的高度,除非内容超出了视口(出现滚动条),或者你给父级设定了高度。否则,浏览器就会让内容简单的往下堆砌,页面的高度根本就不会考虑。


因为页面并没有缺省的高度值,所以,当你让一个元素的高度设定为百分比高度时,无法根据获取父元素的高度,也就无法计算自己的高度。换句话说,父元素的高度只是一个缺省值:height: auto;。当你要求浏览器根据这样一个缺省值来计算百分比高度时,只能得到undefined的结果。也就是一个null值,浏览器不会对这个值有任何的反应。

所以,当我们不给父级设置高度时,子元素的height:100%并不会起作用。
所以要使子元素的height:100%起作用,就要这样:

<html style="height: 100%;">
  <body style="height: 100%;">
    <div style="height: 100%;">
      <p>
        这样这个div的高度就会100%了
      </p>
    </div>
  </body>
</html>

还有一些使用height:100%的注意事项:
1、height:100%的时候,可能会因为margin、padding、border属性造成出现滚动条,可能不是你预期。
2、如果你的元素实际高度大于你设定的百分比高度,那元素的高度会自动扩展。

展开阅读全文

怎么让这个按键起作用

11-16

网上抄的代码,但不知如何调用,我调用的不起作用?大家看看!rn[code=Delphi(Pascal)]rnunit Unit1;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,rn StdCtrls, Buttons;rnrntypern TForm1 = class(TForm)rn BitBtn1: TBitBtn;rn procedure BitBtn1Click(Sender: TObject);rn privatern Private declarations rn publicrn Public declarations rn end;rnrnvarrn Form1: TForm1;rn hNextHookProc: HHook;rn procSaveExit: Pointer;rnrnfunction KeyboardHookHandler(iCode: Integer;rn wParam: WPARAM;rn lParam: LPARAM): LRESULT; stdcall; export;rnfunction EnableHotKeyHook: BOOL; export;rnfunction DisableHotKeyHook: BOOL; export;rnprocedure HotKeyHookExit; far;rnrnimplementationrnrn$R *.DFMrn function KeyboardHookHandler(iCode: Integer;rn wParam: WPARAM;rn lParam: LPARAM): LRESULT; stdcall; export;rnconstrn _KeyPressMask = $80000000;rnbeginrn Result := 0;rn If iCode < 0 Thenrn beginrn Result := CallNextHookEx(hNextHookProc, iCode, wParam, lParam);rn Exit;rn end;rn // 侦测 Ctrl + B 组合键rn if ((lParam and _KeyPressMask) = 0) and //(lparam and $80000000= 0) -->down <>0 --> up;rn (GetKeyState(vk_control) <0) and (wParam = Ord('B')) thenrn beginrn Result := 1;rn WinExec('C:\WINDOWS\Notepad.exe', sw_show); // 记事本rn end;rnend;rnrnrnfunction EnableHotKeyHook: BOOL; export;rnbeginrn Result := False;rn if hNextHookProc <> 0 then Exit;rn // 挂上 WH_KEYBOARD 这型的 HOOK, 同时, 传回值必须保留下rn // 来, 免得 HOOK 呼叫链结断掉rn hNextHookProc := SetWindowsHookEx(WH_KEYBOARD,rn KeyboardHookHandler,rn HInstance,rn 0);rn Result := hNextHookProc <> 0;rnrnend;rnrnrnfunction DisableHotKeyHook: BOOL; export;rnbeginrn if hNextHookProc <> 0 thenrn beginrn UnhookWindowshookEx(hNextHookProc); // 解除 Keyboard Hookrn hNextHookProc := 0;rn MessageBeep(0);rn MessageBeep(0);rn end;rn Result := hNextHookProc = 0;rnend;rnrnrnprocedure HotKeyHookExit;rnbeginrn // 如果忘了解除 HOOK, 自动代理解除的动作rn if hNextHookProc <> 0 then DisableHotKeyHook;rn ExitProc := procSaveExit;rnend;rnrnrnprocedure TForm1.BitBtn1Click(Sender: TObject);rnbeginrnEnableHotKeyHook;rnDisableHotKeyHook;rnHotKeyHookExit;rnKeyboardHookHandler(1,$80000000, Ord('B'));rnend;rnrn[/code] 论坛

没有更多推荐了,返回首页