`
kingkit
  • 浏览: 39319 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Canvas做的圆角窗口(有阴影)

阅读更多

Canvas做的圆角窗口(有阴影)
传统的写圆角方式主要有两种方法,一种是图片做背景图、另一种是用很多个不同透明度或者明暗不同的像素点围成一个圆角。第一种的话比较容易实现,但需要切图;第二种网上主要有以下这几个做得很不错的:
1. Curvycorners  www.curvycorners.net
2. Nifty Corners  http://pro.html.it/esempio/nifty/
3. anti-aliased-nifty-corners  http://www.acko.net/anti-aliased-nifty-corners
4. rounded-corners  http://seky.nahory.net/2005/04/rounded-corners/
5. rounded_corners  http://www.editsite.net/blog/rounded_corners.html
第5个是综合前面几个的结晶。
最近在写一套web UI组件http://kingkit.iteye.com/admin/blogs/462880,做到窗口的时候在想,有没另外的方法来实现圆角呢?既不用图片也不用一个1像素的DIV来拼。后来找资料时发现用HTML5的元素canvas可以画图,另外还有个mootools的UI框架也是用同样的方式实现的,所以翻了下资料后自己也动手做了一下,大家看这种方法会不会比图片和拼像素的实现方法好呢?
最终做出来的效果如图(附demo):



 

 
 
 
注:Drag类是从网上拿来的,作者好像是cloudgamer

调用:

var width = 500;
			var height = 250;
			var radius = [5,5,5,5];//圆角半径:左上,左下,右下,右上			
			var title = "KUI web组件之容器";
			var content = "s圆角半径:左上,左s圆角半径:左上,";
			window.onload = function(){				
				//var d = new Container(title, content, width, height, radius, shadowBlur);
				var d = new Container(title, content, width, height, radius);
				document.getElementById('openBtn').onclick = function(){
					d.show();	
				}				
				document.getElementById('closeBtn').onclick = function(){
					d.hide();	
				}
				var drag = new Drag("container", { mxContainer: "con", Handle: "titleBar", Limit: true,
					onStart: function(){ $("idShow").innerHTML = "开始拖放"; },
					onMove: function(){ $("idShow").innerHTML = "left:"+this.Drag.offsetLeft+";top:"+this.Drag.offsetTop; },
					onStop: function(){ $("idShow").innerHTML = "结束拖放"; }
				});				
			}

 

  • 大小: 28.6 KB
  • 大小: 27.7 KB
  • 大小: 27.8 KB
  • 大小: 27.8 KB
分享到:
评论
26 楼 ray_linn 2010-08-03  
很早就有了,用javascript做圆角。。。
25 楼 rainsilence 2010-08-01  
lz很有创意哈。。。整个窗口都用canvas实现,按钮和输入的地方用定位实现,拖动的地方再盖一层div。

robinqu 写道
为啥要用canvas写圆角?
支持canvas的浏览器不是都支持border-radius么?


对于border-radius的支持程度不一样的。。。也没办法达到Canvas的灵活程度。如果你不想用圆角了,想要不规则页面了怎么办?
24 楼 robinqu 2010-07-24  
为啥要用canvas写圆角?
支持canvas的浏览器不是都支持border-radius么?
23 楼 viperasi 2010-07-21  
恩 现在貌似跟mochaui感觉很像哦。

mochaui也是跟jquery好像有冲突,需要jquery释放$符号。
22 楼 kingkit 2010-06-15  
yuqihui 写道
好像与jQuery有冲突。
将jQuery.js在包内js之后导入,Drag.js出错。
将jQuery.js在包内js之前导入,可以
但我的其他用到jQuery的就出错了。


你把Drag.js里面的$修改一下就可以了。
21 楼 tao0749 2010-06-08  
ie8 不太兼容哦·
20 楼 yuqihui 2010-01-16  
好像与jQuery有冲突。
将jQuery.js在包内js之后导入,Drag.js出错。
将jQuery.js在包内js之前导入,可以
但我的其他用到jQuery的就出错了。
19 楼 fkpwolf 2010-01-08  
居然用宋体,汗
18 楼 WendyJan 2010-01-08  
不错,看来楼主也是喜欢用chrome,哈哈``这个浏览器我用了一年左右了吧。
17 楼 jacki6 2010-01-07  
不错 之前用css弄了个 直接在网上找了个css 然后直接引用 也可以实现 收藏了先
16 楼 sidac 2010-01-06  
效果不错,支持一下
15 楼 kingkit 2010-01-06  
hanjiangit 写道
下在了楼主的代码 用IE打开跟firefox打开的效果一样 是否IE已经支持html5了?

非也。IE还不支持canvas,是因为用了google团队开发的excanvas的缘故。
14 楼 hanjiangit 2010-01-06  
下在了楼主的代码 用IE打开跟firefox打开的效果一样 是否IE已经支持html5了?
13 楼 iaimstar 2010-01-05  
html5可不算瞎折腾

12 楼 wv1124 2010-01-05  
别在折腾我们这些程序员啦!
11 楼 kingkit 2010-01-05  
iaimstar 写道
引入这个js的成本大么?

兼顾一下IE,成本大不大看自己的需要吧,呵呵
10 楼 iaimstar 2010-01-05  
引入这个js的成本大么?
9 楼 kingkit 2010-01-05  
black.angel 写道
LS 请教一下 Canvas 怎么支持 IE6 ?

用 excanvas,你看附件里面,我加了这一行:
<!--[if IE]><script type="text/javascript" src="excanvas.js"></script><![endif]-->
8 楼 black.angel 2010-01-05  
LS 请教一下 Canvas 怎么支持 IE6 ?
7 楼 dayone 2010-01-05  
IE6下效果一样的,不错

相关推荐

    Ajax精彩仿vista窗口

    3. **阴影效果**:为了增加立体感,窗口可能带有阴影,JavaScript库如jQuery UI或自定义的阴影插件可以帮助实现这一效果。 4. **动画过渡**:Vista窗口的打开和关闭往往伴随着平滑的动画过渡,这需要JavaScript的...

    Jquery精美聊天窗口

    在设计方面,为了实现精美的视觉效果,开发者可能运用了CSS3的新特性,如动画(animation)、过渡(transition)以及阴影(box-shadow)、圆角(border-radius)等,为聊天窗口增添动态和立体感。此外,响应式设计...

    HTML5电脑端微信聊天窗口界面.zip

    在这个项目中,CSS3的气泡样式可以使用伪元素(`:before`和`:after`)配合`border-radius`和`box-shadow`属性来创建,这些属性能实现圆角和阴影效果,使得消息气泡看起来更加立体。`transition`属性用于平滑地改变...

    html5仿微信聊天界面

    在仿微信聊天界面中,CSS3用于美化界面,如圆角边框、阴影、渐变色、过渡效果和动画。例如,使用Flexbox或Grid布局可以实现灵活的界面布局,而`@keyframes`规则则可创建自定义动画。 3. **JavaScript**: JavaScript...

    Flex 做的仿Vista的皮肤

    在Flex中实现VistaBlue风格,可能包括使用类似Aero Glass的半透明效果、圆角、动态阴影以及Vista默认的图标和按钮样式。 4. **Flex组件库** Flex提供了丰富的组件库,如Button、Canvas、Accordion、TabBar等,这些...

    常用的做网页的技巧,一用就知道

    日历的美化可能涉及到CSS3的阴影、渐变、圆角等特性。 5. **防刷新的导航菜单**: 防止用户滚动页面时导航栏随着页面一起移动,常使用固定定位(fixed positioning)使导航栏始终显示在屏幕顶部,确保用户能快速...

    QPainter实现Qt5气泡式聊天框

    `drawRoundedRect()`用于绘制带有圆角的气泡,`drawText()`则用于在气泡内显示聊天内容。 为了实现聊天框的气泡效果,可以使用`QPainterPath`来绘制更复杂的形状,比如包含箭头指向的气泡。首先创建一个路径,然后...

    delphi仿QQ2011界面

    例如,模仿QQ2011的气泡聊天窗口,我们需要使用TPaintBox组件,并在它的OnPaint事件中使用Canvas对象绘制出圆角矩形和阴影效果,实现类似气泡的视觉效果。 再者,实现QQ2011的动态效果,如按钮按下、鼠标悬停等,...

    wpf siverlight 不规则窗体布局

    然而,不规则窗体布局允许开发者创建具有任意形状的窗口,如带有圆角、剪裁图像或完全自定义形状的窗口。这种布局方式常用于提供独特的用户界面体验,增强应用程序的视觉吸引力。 在WPF中,实现不规则窗体布局主要...

    高级前端工程师面试题整理1

    - sessionStorage:数据只在当前浏览器窗口有效,关闭后删除,存储大小较大。 - localStorage:持久存储,浏览器关闭后数据仍保留,除非手动删除,存储大小同样较大。 4. 为何HTML5只需写`&lt;!DOCTYPE HTML&gt;`? 因为...

    HTML5五子棋网页小游戏代码

    它提供了丰富的样式和动画效果,如阴影、渐变、圆角、变形等,使得棋盘和棋子的外观更加精美。同时,CSS3的媒体查询(media queries)特性可以确保游戏在不同设备和屏幕尺寸上都能正常显示,适应移动设备的需求。 ...

    web桌面程序

    在Web桌面程序中,CSS3可用于创建窗口边框效果、阴影、圆角以及自适应布局。 4. **.NET框架**: .NET框架提供了开发Web应用的全面解决方案,包括ASP.NET(用于Web应用程序)、Windows Forms(用于桌面应用程序)等。...

    jQuery可拖拽对话框弹出层代码.zip

    使用CSS3,我们可以添加更多的动态效果,如阴影、圆角、过渡和动画,使得对话框更具吸引力。 JavaScript是网页的脚本语言,负责增加交互性。在这个例子中,JavaScript(通过jQuery库)实现了对话框的拖拽功能。这...

    仿Apple编辑应用程序图标

    3. **阴影和高光**:为了增加立体感,Apple图标常常有微妙的阴影和高光。WPF中的`DropShadowEffect`和`BitmapEffect`类可以帮助我们添加阴影,而通过调整形状的透明度或颜色亮度,可以实现高光效果。 4. **图标组合...

    android 自定义翻书效果

    自定义翻书效果需要用到2D图形库,如OpenGL ES或Canvas,它们允许开发者直接操作像素来创建复杂的视觉效果。 2. 视觉欺骗:翻书效果是通过模拟纸张边缘的透视变化和阴影效果,以及页面的物理运动,来达到逼真的翻页...

    JS界面源代码

    在实现这样的界面时,开发者可能使用了CSS3来增强视觉效果,例如阴影、圆角、渐变和过渡效果。同时,HTML5的新特性也可能被用来构建更加结构化的界面元素,比如canvas用于绘制图形,web storage用于本地数据存储,...

    html5 仿微信聊天界面web微信.rar

    - **阴影效果(Box Shadow)**:为元素添加阴影,提升立体感,可能用于聊天窗口或者按钮等元素。 - **背景平铺(Background Repeat)**:实现背景图片的重复或非重复显示,增加界面美观度。 - **媒体查询(Media ...

    HTML5期末考精彩试题型.docx

    5. 阴影区域考虑在内,div的宽度应减去`border`和`padding`,所以是`300px - 2 * 1px - 2 * 50px = 248px`。 6. `transition`属性配合其他CSS属性实现动画效果。 **简答题知识点**: 1. 标准的HTML5页面结构包括`...

    CSS3实现立体文字动态文字特效

    在CSS3中,我们可以通过一系列的样式规则来改变文本的外观,使其看起来像浮出页面或者有深度感。这些效果不仅增加了网页的视觉吸引力,还能在用户交互时提供反馈,提升用户体验。 描述中提到“附件提供了8种特殊...

    wpf仿win7界面

    例如,设置控件背景为半透明,按钮和窗口边框使用圆角,以及添加微妙的光影效果。 2. **控件仿制** WPF 提供了多种内置控件,如`Button`, `Label`, `TabControl`等,我们可以根据Win7的界面元素进行定制。例如,...

Global site tag (gtag.js) - Google Analytics