`

js圆角框组件(图片)

阅读更多

/*
Name: b_RoundCurve Css圆角框组件--冰极峰
Version: 1.0
Author: biny
Email:szbiny@163.com
冰极峰博客地址:http://www.cnblogs.com/binyong
你可以免费使用和修改代码,但请保留完整的版权信息。

有如下五种调用方法:
	b_RoundCurve("bottom","#F8B3D0","#FFF5FA",1);//普通圆角框
	b_RoundCurve("left1","#AE0474","#FB7D3F",3,"h3","","image/bg5.gif");//标题用背景图片
	b_RoundCurve("right1","#863313","#84D4CA",3,"h3","#BAB556");//标题只用纯色背景
	b_RoundCurve("right2","orange","",3,"h3","");//标题不带背景色
	b_RoundCurve("top","#4C7C9B","",4);//圆角背景图片
	b_RoundCurve("img","#999","#FFF5FA",2);//圆角IMG图片
*/

/*
  圆角函数
  传递7个参数
  1.class类名
  2.边框色
  3.主体内容区背景色
  4.风格切换方式,从1-5,5种圆角框样式,针对不同环境使用。
  5.标题的html结构标签名
  6.标题背景色
  7.标题背景图片路径(和6是相斥的,两个选择一个)
*/
function b_RoundCurve(classname,b_c,bg_c,state,tagname,titlebg,titleimg){	
	var divs=getElementsByClassName(classname);
	for(var i=0;i<divs.length;i++){
		var obj=divs[i];
		var path=window.location.href;//当前页面的路径
		path=path.substring(0,path.lastIndexOf('/')+1);
		//b标签的通用样式
		var comstyle="height:1px; font-size:1px;overflow:hidden; display:block;";
		//b标签的结构样式
		var b1="margin:0 5px;";//和b8相同
		var b2="margin:0 3px;border-right:2px solid; border-left:2px solid;";//和b7相同
		var b3="margin:0 2px;border-right:1px solid; border-left:1px solid;";//和b6相同
		var b4="margin:0 1px;border-right:1px solid; border-left:1px solid;height:2px;";//和b5相同
		var content="border-right:1px solid;border-left:1px solid;overflow:hidden;position:relative;";
		var bgColor="background:"+bg_c+";";//背景色
		
		//img图片的背景定位
		var imgPos2="background-position:-4px top;";
		var imgPos3="background-position:-2px -1px;";
		var imgPos4="background-position:-1px -2px;";
		var conPos="background-position:left -4px;";
		var imgPos5="background-position:-1px bottom;";
		var imgPos6="background-position:-2px bottom;";
		var imgPos7="background-position:-4px bottom;";
		
		//定义一些变量,这些变量包含不同的样式,在各种风格中拼合组装
		var imgBgStr,imgPos3,imgPos4,conPos,imgPos5,imgPos6,imgPos7;
		var b_img2,b_img3,b_img4,b_img5,b_img6,b_img7,c_img,imgurl;
		
		//五种不同的风格切换
		if(state==1){//最通常使用的线框
		    //组装样式
			b_img2=bgColor;
			b_img3=bgColor;
			b_img4=bgColor;
			c_img=bgColor;
			b_img5=bgColor;
			b_img6=bgColor;
			b_img7=bgColor;
	    }
		if(state==2){//如果是img图片方式,则用背景模拟圆角,注意IMG标签必须显式指定宽高,否则在safari中显示不出来。
			var imgObj=divs[i].getElementsByTagName('img')[0];
			var imgheight=imgObj.height;//图片高度
			var contentheight=imgheight-10;//中间图片的高度
			var imgweight=imgObj.width;//图片宽度
			obj.style.width=(imgweight+2)+"px";
			var imgsrc=imgObj.src.replace(path,'');//图片文件的相当路径
			var imgBgStr="background:url("+imgsrc+") no-repeat;";
			//组装样式
			conPos="height:"+contentheight+"px;width:"+imgweight+"px;overflow:hidden;";	
			
			b_img2=imgBgStr+imgPos2;
			b_img3=imgBgStr+imgPos3;
			b_img4=imgBgStr+imgPos4;
			c_img=conPos;
			b_img5=imgBgStr+"background-position:-1px -"+ (imgheight-4)+"px;";
			b_img6=imgBgStr+"background-position:-2px -"+ (imgheight-2)+"px;";
			b_img7=imgBgStr+"background-position:-4px -"+ (imgheight-1)+"px;";
			imgurl=imgsrc;
		}
		if(state==3){//如果是带标题方式,又可分为两种情况,一种直接用背景色,一种是用背景图片方式
		    var objh3=obj.getElementsByTagName(tagname)[0];
			if(titleimg!=null){//标题带水平平铺的背景图片
				var bgimg="background:url("+titleimg+") repeat-x;";
				b_img2=bgimg+imgPos2;
				b_img3=bgimg+imgPos3;
				b_img4=bgimg+imgPos4;
				//标题栏样式
				objh3.style.background="url("+titleimg+") repeat-x left -4px";
				objh3.style.borderBottomColor=b_c;
			}
			else{//标题不带水平平铺的背景图片
				var bg_c="background:"+titlebg+";";//背景色
				b_img2=bg_c;
				b_img3=bg_c;
				b_img4=bg_c;
				//标题栏样式
				objh3.style.background=titlebg;
				objh3.style.borderBottomColor=b_c;
			}
			//组装样式
			c_img=bgColor;
			b_img5=bgColor;
			b_img6=bgColor;
			b_img7=bgColor;

		}
		if(state==4){//如果是背景图片方式,则。。。
			//先从样式表中获取背景图片的样式,要求加入图片的容器明确定义宽度和高度,和背景图片,这是用在JS用来搜寻的依据。
			var bgimg=getStyle(obj,"backgroundImage");
			var bgWidth=getStyle(obj,"width");
			bgimg=bgimg.replace(path,"");
			bgimg=bgimg.substring(4,bgimg.length);
			bgimg=bgimg.substring(0,bgimg.length-1);
			var bgimgheight=getStyle(obj,"height");//图片的高度
			
			bgimgheight=bgimgheight.replace("px","");
			var contentheight=bgimgheight-10;//中间图片的高度,包含上下边框2px宽度
			bgWidth=bgWidth.replace("px","");
			bgWidth=bgWidth-2;
			
			bgimg=bgimg.replace("url(\"","");
			bgimg=bgimg.replace("\")","");//获得背景图片的全部径。
			path=path.substring(0,(path.lastIndexOf('/')+1));//页面地址
			bgimg=bgimg.replace(path,"");
			imgBgStr="background:url("+bgimg+") no-repeat;";
			obj.style.background="none";//将原始的背景图片隐藏
			//组装样式
			b_img2=imgBgStr+imgPos2;
			b_img3=imgBgStr+imgPos3;
			b_img4=imgBgStr+imgPos4;
			c_img=imgBgStr+conPos+"height:"+contentheight+"px;width:"+bgWidth+"px;";
			
			//关键代码,特别是对图片的定位,需要知道图片的高度。
			b_img5=imgBgStr+"background-position:-1px -"+ (bgimgheight-4)+"px;";
			b_img6=imgBgStr+"background-position:-2px -"+ (bgimgheight-2)+"px;";
			b_img7=imgBgStr+"background-position:-4px -"+ (bgimgheight-1)+"px;";
		}
		if(state==2 || state==4){
			conDivHeight="";
	    }
		else{
			var H=getStyle(obj,"height");//获到容器的高度
			H=H.replace("px","");//去掉单位
			conDivHeight="height:"+(H-8)+"px";//容器的高度伪装成css中的设置的一样
		}
		/*创建一个容器结构体*/
		var rDivStr="<b style='"+ comstyle+b1+"background:"+b_c+"'></b>";
		rDivStr+="<b style='"+ comstyle+b2+"border-color:"+b_c+";"+b_img2+"'></b>";
		rDivStr+="<b style='"+ comstyle+b3+"border-color:"+b_c+";"+b_img3+"'></b>";
		rDivStr+="<b style='"+ comstyle+b4+"border-color:"+b_c+";"+b_img4+"'></b>";
		rDivStr+="<div style='"+content+"border-color:"+b_c+";"+c_img+conDivHeight+"'>";
		rDivStr+="@d_P";
		rDivStr+="</div>";
		rDivStr+="<b style='"+ comstyle+b4+"border-color:"+b_c+";"+b_img5+"'></b>";
		rDivStr+="<b style='"+ comstyle+b3+"border-color:"+b_c+";"+b_img6+"'></b>";
		rDivStr+="<b style='"+ comstyle+b2+"border-color:"+b_c+";"+b_img7+"'></b>";
		rDivStr+="<b style='"+ comstyle+"margin:0 5px;background:"+b_c+"'></b>";
		
		var htmlText=divs[i].innerHTML;
		if(state==2){
			var str1=htmlText.replace("src=\"","src=\"*");
			var strsplit1=str1.split('*')[0];
			var strsplit2=str1.split('*')[1];
			var url=strsplit2.substring(0,strsplit2.indexOf('\"'));
			htmlText=strsplit1+imgurl+"\" style='border:0px;position:absolute;top:-4px;left:0px;'/>";
		}
		rDivStr=rDivStr.replace('@d_P',htmlText);
		divs[i].innerHTML=rDivStr;//替换结构
	}
}

// 说明:准确获取指定元素 CSS 属性值
// 此函数的两个参数,elem为要获取的对象,name为样式属性,如“backgroundColor”
function getStyle( elem, name )
{
	//如果该属性存在于style[]中,则它最近被设置过(且就是当前的)
	if (elem.style[name])
	{
		return elem.style[name];
	}
	//否则,尝试IE的方式
	else if (elem.currentStyle)
	{
		return elem.currentStyle[name];
	}
	//或者W3C的方法,如果存在的话
	else if (document.defaultView && document.defaultView.getComputedStyle)
	{
		name = name.replace(/([A-Z])/g,"-$1");
		name = name.toLowerCase();
		//获取style对象并取得属性的值(如果存在的话)
		var s = document.defaultView.getComputedStyle(elem,"");
		return s && s.getPropertyValue(name);
	    //否则,就是在使用其它的浏览器
	}
	else
	{
		return null;
	}
}

/*根据类名获得对象
调用方法:var topicnum=getElementsByClassName("classname");
*/
function getElementsByClassName(searchClass, node,tag){  
	if(document.getElementsByClassName){return  document.getElementsByClassName(searchClass)}
	else{        
		node = node || document;        
		tag = tag || "*";        
		var classes = searchClass.split(" "),        
		elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag),        
		patterns = [],         
		returnElements = [],        
		current,         
		match;        
		var i = classes.length;       
		while(--i >= 0){patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));}        
		var j = elements.length;       
		while(--j >= 0){            
			current = elements[j];           
			match = false;            
			for(var k=0, kl=patterns.length; k<kl; k++){                
				match = patterns[k].test(current.className);                
				if (!match)  break;           
			} 
			if (match)  returnElements.push(current);        
		}        
		return returnElements;   
	} 
}


原文地址:
http://www.cnblogs.com/binyong/archive/2009/12/11/1621484.html
分享到:
评论

相关推荐

    圆角框栏目制作

    例如,在React中,我们可以创建一个自定义组件,利用CSS-in-JS库如styled-components或emotion来定义圆角框样式。 总结起来,圆角框栏目制作是前端开发中的基本技能,它结合了CSS的`border-radius`属性和良好的设计...

    imgtooltip 基于jquery的圆角框图片提示(鼠标移上显示).zip

    【标题】"imgtooltip 基于jquery的圆角框图片提示(鼠标移上显示)"是一个使用jQuery库实现的网页组件,它为用户提供了一种在鼠标悬停时显示圆角框图片提示的功能。这种提示通常用于增强用户体验,帮助用户更好地理解...

    Mootools 圆角框的信息提示框.zip

    "Mootools 圆角框的信息提示框.zip" 是一个包含使用Mootools JavaScript库创建具有圆角效果的提示框的资源包。Mootools是一个轻量级且强大的JavaScript框架,它提供了一系列工具和方法,使得开发者能够更方便地处理...

    jQuery+shutter.js圆角百叶窗图片轮播代码

    **jQuery + shutter.js 圆角百叶窗图片轮播代码详解** 在网页设计中,动态效果和交互性是提升用户体验的重要元素。`jQuery` 是一个广泛使用的 JavaScript 库,它简化了 DOM 操作、事件处理以及动画效果。而 `...

    仿QQ界面的JS提示框组件.zip

    "仿QQ界面的JS提示框组件.zip" 这个标题和描述表明,这是一个前端开发资源,具体来说是一个JavaScript组件,它的设计灵感来源于腾讯的QQ应用程序,目的是在网页上创建类似QQ应用中的提示框效果。这个组件可能是为了...

    jQuery+shutter.js圆角百叶窗图片轮播代码.zip

    《jQuery+shutter.js圆角百叶窗图片轮播代码详解》 在Web开发中,动态、美观的图片展示方式是提升用户体验的关键因素之一。"jQuery+shutter.js圆角百叶窗图片轮播代码"就是一个这样的解决方案,它结合了jQuery库的...

    OpenHarmony自定义组件roundimage,用来设置圆形图片或圆角图片

    本项目聚焦于OpenHarmony中的自定义组件——RoundImage,这是一个特别设计的图像组件,能够将图片显示为圆形或者带有圆角的效果,从而提升应用的视觉效果和用户体验。 RoundImage组件的实现原理主要是通过图形绘制...

    CSS 圆角框进行JS封装版

    为了解决这个问题,作者通过JavaScript(JS)进行封装,使得img标签引用的图片也能轻松实现圆角化。同时,这次封装还修复了之前背景图片下两个圆角图片定位错误的问题。 在JS封装的过程中,关键在于利用innerHTML...

    CSS圆角组件CSS圆角组件

    其中,CSS圆角组件是CSS3引入的一项重要特性,它使得我们可以为网页元素创建平滑、优雅的圆角边框,从而提升用户界面的美观度和现代感。本篇将深入探讨CSS圆角组件的使用方法、兼容性以及实际应用。 首先,实现CSS...

    Axure RP 8 带滚动条带筛选的下拉列表框 圆角文本框

    总的来说,了解如何在Axure RP 8中创建和使用带有高级特性的UI组件,如带滚动条和筛选的下拉列表框以及圆角文本框,对于提升设计质量和效率至关重要。通过熟练运用元件库,设计师可以更专注于设计本身,而非基础组件...

    5屏圆角Flash图片滚动展示.rar

    JavaScript库如Bootstrap的Carousel组件、Swiper.js或Slick等都可以帮助快速构建这样的功能,同时提供了许多预设的动画选项和自定义可能性。开发者还可以使用现代前端框架,如Vue或React,结合这些库来构建更加复杂...

    RectMask.js

    Cocos Creator 利用Mask组件裁剪圆角矩形

    一个适用于微信小程序的输入组件可以发送文字语音图片

    在微信小程序的开发中,构建一个能够发送文字、语音和图片的输入组件是提升用户体验的关键要素之一。这个组件通常用于聊天、评论或者反馈等场景,让用户可以自由选择适合的表达方式。下面我们将深入探讨如何利用...

    几种圆角的方法源码

    此外,现代前端框架如React、Vue和Angular也提供了组件或指令来方便地实现圆角。 5. CSS clip-path 属性: 虽然`clip-path`属性主要用于裁剪元素的可见部分,但也可以用来创建复杂的形状,包括圆角。通过定义一个...

    多彩的圆角矩形Dash边框.zip

    圆角矩形在UI设计中非常常见,它们可以为按钮、卡片或其他界面组件增添柔和与现代感,而虚线边框则常常用来表示非实心状态,如未选中或禁用状态。 开源项目"YXYDashLayer-master"可能是一个专门用于构建这种效果的...

    JavaScript canvas绘制圆角矩形.html

    Canvas 中文名称叫“画布”,它是游戏中所有UI组件的“容器”。一个场景中,可以允许多个Canvas对象的存在,还允许Canvas之间可以进行“嵌套”使用。需要注意的是,场景中的任何一个UI对象,都肯定是某个Canvas对象...

    css3 支持ie8以下圆角

    - 当使用背景图片时,可能需要调整图片的裁剪和位置,以避免与圆角发生冲突。 - 注意CSS3 PIE仅适用于盒模型为`content-box`的元素,若使用`border-box`,可能需要额外调整。 5. 其他兼容性解决方案: - 使用渐...

Global site tag (gtag.js) - Google Analytics