`
kingkit
  • 浏览: 39321 次
  • 性别: 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
分享到:
评论
6 楼 kingkit 2010-01-04  
changkunyang 写道
不知道楼主有没有发现,这有一个缺陷,那就是容器没法遮住select元素。

是的。这个还没实现。
网上流传的在div下面加一个iframe比较多人用吧。
5 楼 kingkit 2010-01-04  
iaimstar 写道
貌似现在只有ie不支持html5了

是啊,附件里面有个google团队对IE做的扩展,支持canvas的部分方法。
未实现有功能有(Uploaded Mar 2009  )
// * Patterns are not implemented.
// * Radial gradient are not implemented. The VML version of these look very
//   different from the canvas one.
// * Clipping paths are not implemented.
// * Coordsize. The width and height attribute have higher priority than the
//   width and height style values which isn't correct.
// * Painting mode isn't implemented.
....

我测试了一下,fillText方法也没实现。
4 楼 changkunyang 2010-01-04  
不知道楼主有没有发现,这有一个缺陷,那就是容器没法遮住select元素。
3 楼 iaimstar 2010-01-04  
c和v的按键确实离得很近
2 楼 dch1287 2010-01-04  
Cancas是啥 。。 囧~
1 楼 iaimstar 2010-01-04  
貌似现在只有ie不支持html5了

相关推荐

    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只需写`<!DOCTYPE HTML>`? 因为...

    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