nw.js node-webkit系列(6)Native UI API Frameless window的使用

本节主要讲无边框窗口。Frameless window,是没有操作系统默认样式的边框的窗口,也就意味着最大、最小和关闭按钮也访问不到,同时默认情况下窗口不能被拖拽。但你可以使用上一节的知识对无边框窗口进行操作。

无边框窗口例子:



(一)设置无边框窗口

只要你在package.json的window区域做如下参数设置,即可设置无边框窗口:

{
  "window": {
    "frame": false,
    "toolbar": false
  }
}

如果打开想在无边框窗口中打开的新窗口也是无边框,则也必须做出以上参数设置:

gui = require('nw.gui');
gui.Window.open('http://google.com',{toolbar:false,frame:false});

(二)使无边框窗口屏幕可拖动

默认情况下,无框窗口是不可拖拽的,可以通过给body添加“-webkit-app-region: drag”样式,来启用拖拽。如果要排除拖动区域的某些不可拖动元素,就使用“-webkit-app-region: no-drag”,目前只支持矩形形状的元素,如button。

<body style="-webkit-app-region: drag">
</body>

注意,如果你把整个窗口拖动,你也必须标记按钮和自定义窗口按钮为不可拖动,否则将对用户点击它们会很辛苦:

button {
  -webkit-app-region: no-drag;
}

如果你只使用自定义标题栏,那么标题栏中的按钮也需要设置no-drag。

其中package.json文件如"toolbar"设为true,设置的标题栏可拖动区域将会被toolbar占据一定位置,所以在无边框中要实现标题栏可拖动最好把"toolbar"设为false。


(三)鼠标事件

一般作为可拖动区域配置的元素将不会发出如mouseenter 或 mousemove事件,这会阻止到:hover这一类的样式触发。有一个方法叫“screen”元素可以解决这个问题,它可以获取事件的初始化及冒泡事件,例子如下:

<!DOCTYPE html>
<html>
	<head>
		<title>windowdemo</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<style>
			#Controls {
				-webkit-app-region: drag;
				position: fixed;
				top: 0;
				right: 0;
				left: 0;
			}
			
			.screen {
				-webkit-app-region: no-drag;
				position: absolute;
				top: 0;
				right: 0;
				bottom: 0;
				left: 0;
			}
			
			#Controls:hover .screen {
				display: none;
			}
		</style>
	</head>
	<body>
		<div id="Controls">Btn1
			<div class="screen">Btn2</div>
		</div>
	</body>
</html>

(四)文本选择

关于无边框窗口还有一种情况时拖动行为影响到文本选择,如自制的标题栏里有文本框,拖动标题栏时会偶尔选中文本框,为了防止这种情况发生,你需要在拖动区域禁止文本框的选中功能,例子如下:

.titlebar {
  -webkit-user-select: none;
  -webkit-app-region: drag;
}


提醒大家一下,不要滥用拖动区域,尽量用到标题栏中,其他区域能不用则不用。

如果有用到无边框窗口,必须有关闭无边框窗口的操作,可使用函数当前窗口的window.close()。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Frameless C是一种新型的建筑设计和施工技术,它的特点是没有传统房屋中常见的框架结构,而是通过一种创新的方式进行结构支撑和连结。使用Frameless C技术可以大大减少建筑材料的浪费,提高施工效率,同时还可以创造出更加开放和自由的空间设计。 Frameless C的设计理念是以刚性盒子为基础,通过模块化的构件进行组合,形成稳定的空间结构。由于没有传统框架的限制,Frameless C可以创造出更大的开放空间,使得室内外的视线和光线流动更加自由。 Frameless C的施工过程也相对简单,不需要大量的焊接和组装工作。通过预先制作好的构件进行现场拼装,可以大大缩短施工周期,减少人力成本。而且由于构件的模块化特点,还可以根据实际需求进行灵活调整和改动。 除了以上的优点,Frameless C还具有较高的抗震性能。由于所有的构件都是紧密连接在一起,形成一个整体结构,其稳定性和承载能力较传统建筑更强。 综上所述,Frameless C是一种创新的建筑设计和施工技术,它通过去掉传统框架结构,创造出更加开放和自由的空间,并且具有简单施工、节约材料、高抗震性等优点,是未来建筑领域的一种发展方向。 ### 回答2: Frameless C 是一种现代设计风格,特点是将窗户、门和其他建筑元素的框架减到最低甚至完全消除,使得整个建筑看起来更加干净、简洁而又现代。Frameless C 强调透明度和光线的自由流动,营造出开放、明亮的室内空间。 Frameless C 在建筑设计中具有许多优势。首先,窗户的大面积设计使得室内获得更多的自然光和景观视野,让人感到更加舒适和接近自然。其次,去除了框架后,室内外空间的边界感消失,创造了无限延伸的视觉效果,使整个建筑看起来更加开放宽敞。 此外,Frameless C 还具有节能的优势。大面积的窗户和门可以让更多的太阳能进入室内,减少人工照明的使用。同时,室内外空间的无缝连接也促进了空气的循环和通风,减少了空调的使用。因此,Frameless C 的设计不仅美观,还有助于提高建筑的能源效率。 然而,Frameless C 的设计也存在一些挑战。首先,大面积的玻璃窗需要更多的支撑,以确保建筑的结构稳定和安全。其次,玻璃窗的清洁和维护也需要额外的注意,以确保窗户始终保持明亮和透明。 总的来说,Frameless C 的设计风格能够带来现代化、开放和节能的建筑体验。它的简洁和透明性给人们带来了更加舒适和愉悦的居住、工作环境。与传统的建筑设计相比,Frameless C 提供了一种创新的方式来打造建筑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值