时间:2021-07-01 10:21:17 帮助过:29人阅读
Test
这个应该是居中的 楼主可以把img给定宽度试试
你的js函数有问题吧。。
测试了再chrome 25.0.1364.172 m下没问题,就直接用css控制了下长宽
#a img ,#b img{width:200px;height:200px}
你的js函数有问题吧。。
测试了再chrome 25.0.1364.172 m下没问题,就直接用css控制了下长宽
#a img ,#b img{width:200px;height:200px}
//图片按比例缩放var flag=false;function DrawImage(ImgD, w, h){var image=new Image();var iwidth = w; //定义允许图片宽度,当宽度大于这个值时等比例缩小var iheight = h; //定义允许图片高度,当宽度大于这个值时等比例缩小image.src=ImgD.src;if(image.width>0 && image.height>0){ //假如图片长宽都不为零flag=true; if(image.height/image.width>= iheight/iwidth){ //通过正弦值判断图片缩放后是否偏高 if(image.height>iheight){ //如果图片比设定的要高 ImgD.height=iheight; ImgD.width=(image.width*iheight)/image.height; }else{ ImgD.width=image.width; ImgD.height=image.height; } ImgD.alt=image.width+"×"+image.height; } else{ //如果图片比例 小于 设定的比例 if(image.width>iwidth){ ImgD.width=iwidth; ImgD.height=(image.height*iwidth)/image.width; }else{ ImgD.width=image.width; ImgD.height=image.height; } ImgD.alt=image.width+"×"+image.height; }} ImgD.style.display = "table-cell";}
你的js函数有问题吧。。
测试了再chrome 25.0.1364.172 m下没问题,就直接用css控制了下长宽
#a img ,#b img{width:200px;height:200px}
这个你测试到底是不是js函数引起的,直接把js函数删掉,然后看看是不是能居中,就知道了。
并且,你这个函数里面就是在修改宽度和高度,你竟然说没有控制CSS样式。。。
这个你测试到底是不是js函数引起的,直接把js函数删掉,然后看看是不是能居中,就知道了。
并且,你这个函数里面就是在修改宽度和高度,你竟然说没有控制CSS样式。。。
测试了下,是这个函数的问题,可是这个函数只修改了图片高度和宽度,没有设置对齐方式啊,为什么图片水平居不了中呢。在不改变函数功能的前提下,这个函数该怎么改呢?谢谢!
ImgD.style.display = "table-cell";
把最后面的这个去掉试试吧。
#a>a,#b>img{ display:inline-block;}
ImgD.style.display = "table-cell";
把最后面的这个去掉试试吧。
这样可以了,谢谢!
不过我还是想问下为什么表格单元内的表格单元不能水平居中呢?
即外层div是table-cell,内层图片是table-cell,这样就不能水平居中。好奇而已。
我的问题解决了,谢谢大家!
我对这个不是太理解
你可以这么认为,display是作用于是用的标签本身的,是让它和table中的td一样的样式,而通常呢,td都是居左显示的,左边或者是table的左边界,或者是上一个兄弟td。所以,你这里设置了table-cell之后,img就去居左了。
可以举个简单的例子:
你理解的优点错误哦。。。
display这个属性,只会对本身有影响,后代是不会继承的
你本身的display不管设置成什么样子,都不会对它后代的显示方式有影响的。
所以,你这里的原因,只是因为img设置了display=table-cell,跟父元素设置了display=table-cell,没有一点关系的。
你理解的优点错误哦。。。
display这个属性,只会对本身有影响,后代是不会继承的
你本身的display不管设置成什么样子,都不会对它后代的显示方式有影响的。
所以,你这里的原因,只是因为img设置了display=table-cell,跟父元素设置了display=table-cell,没有一点关系的。
但是img设置了table-cell后再设置text-align: center;都不起作用。
http://www.w3school.com.cn/css/pr_text_text-align.asp
text-align一般是用于处理文字的(后代会继承该属性),并且,这个是对子元素设置的效果,说是对子元素,其实也包括该元素包含的文字,但有一点是肯定,它对它本身是没有影响的。而display正好相反,display只对设置的元素本身有影响,并且后代不会继承。
一般情况下,text-align:center不会让子标签中的块级元素显示为居中的,比如,行内元素会被居中处理。这里img是属于行内元素的表现类型,所以才会居中。
display中,只有“inline”和“inline-***”开头的属性是属于行内元素的,而table开头的属性,都是被解析成块级元素的。
好像说的差不多了。。
给你个例子,还是在上面例子的基础上修改的。
http://www.w3school.com.cn/css/pr_text_text-align.asp
text-align一般是用于处理文字的(后代会继承该属性),并且,这个是对子元素设置的效果,说是对子元素,其实也包括该元素包含的文字,但有一点是肯定,它对它本身是没有影响的。而display正好相反,display只对设置的元素本身有影响,并且后代不会继承。
一般情况下,text-align:center不会让子标签中的块级元素显示为居中的,比如,行内元素会被居中处理。这里img是属于行内元素的表现类型,所以才会居中。
display中,只有“inline”和“inline-***”开头的属性是属于行内元素的,而table开头的属性,都是被解析成块级元素的。
好像说的差不多了。。
给你个例子,还是在上面例子的基础上修改的。