您好,欢迎访问一九零五行业门户网

小女子求高手帮忙解决div布局问题~先谢过各大神!_html/css_WEB-ITnose

本身是可以按照一排四个div排列的,自动换行。如下图:
可是当我给div加了name属性,是为了选取数据库中我需要的数据。就无法正常排列了,div宽度被无视,也不自动换行,变成了这幅样子。。。。。
css代码如下:
.carre
{
text-align: center;
display: inline-block;
vertical-align: top;
height: 150px;
width: 150px;
margin: 20px;
background-color: #ffffff;
float: left;
box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.2);
border-color: #ffffff;
color:#ff9999;
font-family: georgia;
}
php选取数据库如下:
javascript的function如下:
function senfe_com1(sid){
var div_array1 = document.getelementsbyname(carre1); 
if(div_array1[0].style.display==none){
for(i=0;i {
div_array1[i].style.display = ; 
}
document.getelementbyid(all).style.display=none;
document.getelementbyid(1).style.backgroundcolor=#a6e5e0;
}else{
for(i=0;i {
div_array1[i].style.display = none; 
}
document.getelementbyid(1).style.backgroundcolor=#ff9999;
}
}
回复讨论(解决方案) 应该有其他样式覆盖了你的carre这个样式中的width属性。
css贴全来
使用的是什么浏览器和版本?在div上点右键,选审查元素或者按f12打开开发者工具看看div的css样式display和其他属性是否是你设计的一样。
你这个可以再改进一下,用php打印数据出来,用json格式传到页面,再用js接收json数据让html去排版,你输出标签是不标准的写法。只需要输出数据即可。
样式上面的错误用调试工具可以看到具体的
应该有其他样式覆盖了你的carre这个样式中的width属性。
css贴全来
可是没用name的时候就可以正常显示啊。在下初出茅庐,写得可能有点乱,不符合标准。望指教~
css如下:
table
{
text-align: center;
border: none;
border-collapse:collapse;
border-width: 2px;
font-family: optima;
}
tr
{
border-left: none;
border-right: none;
border-color: white;
border-width: 2px;
}
td
{
border-left: none;
border-right: none;
border-color: white;
border-width: 2px;
font-size: 16px;
}
td:hover{
background-color: #a6e5e0;
}
th
{
text-align: center;
border:none;
border-width: 2px;
}
aside
{
    position: relative;
    width:200px;
    padding-top: 30px;
    height: 1270px;
    margin-bottom: 0;
    float:left;
    background-color: #ff9999;
   box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.2);
}
.container1, aside
{
    display: inline;
    vertical-align: top;
    text-align: center; 
}
.container2, aside
{
    display: inline;
    vertical-align: top;
    text-align: center;
}
.carre
{
text-align: center;
display: inline-block;
vertical-align: top;
height: 150px;
width: 150px;
margin: 20px;
background-color: #ffffff;
float: left;
box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.2);
border-color: #ffffff;
color:#ff9999;
font-family: georgia;
}
.container1{
position: relative;
display: flex;
   flex-flow: row;
   background-color: #ffcc99;
   height:100%;
box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.2);
margin-bottom: 0;
padding-left: 30px;
}
.container2{
position: relative;
display: flex;
   flex-flow: row;
    margin-bottom: 0;
}
html, body
{
margin:0;
height:1300px;
text-align: center; 
}
body 
{
   text-align: center; 
}
.wrapper
{
width: 1050px; 
   margin: 0 auto; 
   text-align: left; 
   height:100%;
}
使用的是什么浏览器和版本?在div上点右键,选审查元素或者按f12打开开发者工具看看div的css样式display和其他属性是否是你设计的一样。
用的chrome,我发现问题就在于加了name标签之后就无法换行。如果一共有三个,就一行排三个,有八个就排八个。。。
排八个的时候就自动变成div.carre 63px * 150px
你这个可以再改进一下,用php打印数据出来,用json格式传到页面,再用js接收json数据让html去排版,你输出标签是不标准的写法。只需要输出数据即可。
样式上面的错误用调试工具可以看到具体的
在下是初学,边实习边自学,可能写法不标准,还望指教。
你说的这个方法我不是很懂,你是说不应该输出div直接输出数据吗?具体做法我没想出来。。。可以讲具体一点,或者举个例子吗?谢谢了!
在chrome下,按f12,查看元素样式。
应该是样式被覆盖了~
因为你在样式里面有display: flex;和flex-flow: row;,这两句的作用就是所有元素按行排成一行。换成
display: -moz-inline-stack; display: inline-block; zoom: 1; *display: inline;



用的chrome,我发现问题就在于加了name标签之后就无法换行。如果一共有三个,就一行排三个,有八个就排八个。。。
排八个的时候就自动变成div.carre 63px * 150px
在chrome下,按f12,查看元素样式。
应该是样式被覆盖了~
哇,成功了!太棒了,谢谢大神~
我只是边写边查试着达到自己想要的效果,所以每句话什么意思并没有完全搞清楚。看来还是要系统地学习呢。
关于display: flex,可以参考: css3-flexbox,你现有的样式也可以自动换行的,加上flex-wrap: wrap;,因为默认是nowrap。
flex现在有三个版本,很方便布局。但是ie最早也是在ie10部分支持,对于xp的用户,因为最高也只能升到ie8,所以兼容行不是很好。
因为你在样式里面有display: flex;和flex-flow: row;,这两句的作用就是所有元素按行排成一行。换成
display: -moz-inline-stack; display: inline-block; zoom: 1; *display: inline;



用的chrome,我发现问题就在于加了name标签之后就无法换行。如果一共有三个,就一行排三个,有八个就排八个。。。
排八个的时候就自动变成div.carre 63px * 150px
因为你在样式里面有display: flex;和flex-flow: row;,这两句的作用就是所有元素按行排成一行。换成
display: -moz-inline-stack; display: inline-block; zoom: 1; *display: inline;



用的chrome,我发现问题就在于加了name标签之后就无法换行。如果一共有三个,就一行排三个,有八个就排八个。。。
排八个的时候就自动变成div.carre 63px * 150px
哇,成功了!太棒了,谢谢大神~
我只是边写边查试着达到自己想要的效果,所以每句话什么意思并没有完全搞清楚。看来还是要系统地学习呢。
刚刚回错人了。。。哎脑子不太好使呵呵。。。
楼上说的返回json,如果你使用类库,比如jquery的话,可以考虑,这样有些操作方便点,比如
不是很清楚现在页面和需要的操作,下面只是举个客户端可能的例子,不再需要name,直接通过class获取节点元素
$(function(){ loaddata();});function loaddata(){ $.getjson('php数据页面地址').done(function(data) { $('#container1').empty();//先清空 $.each(data.items, function(i, item) { $('
'+item.critere+' ').appendto(#container1); }); });}function senfe_com1(sid){ var el = $('.carre1'); if(el[0].is(:visible) == false) { el.show(); $('#all').hide(); $('#1').css({'background-color': '#a6e5e0'}); } else { el.hide(); $('#1').css({'background-color': '#ff9999'}); }}
哇,成功了!太棒了,谢谢大神~
我只是边写边查试着达到自己想要的效果,所以每句话什么意思并没有完全搞清楚。看来还是要系统地学习呢。
刚刚回错人了。。。哎脑子不太好使呵呵。。。
关于display: flex,可以参考: css3-flexbox,你现有的样式也可以自动换行的,加上flex-wrap: wrap;,因为默认是nowrap。
flex现在有三个版本,很方便布局。但是ie最早也是在ie10部分支持,对于xp的用户,因为最高也只能升到ie8,所以兼容行不是很好。
因为你在样式里面有display: flex;和flex-flow: row;,这两句的作用就是所有元素按行排成一行。换成
display: -moz-inline-stack; display: inline-block; zoom: 1; *display: inline;



用的chrome,我发现问题就在于加了name标签之后就无法换行。如果一共有三个,就一行排三个,有八个就排八个。。。
排八个的时候就自动变成div.carre 63px * 150px
大神,能帮我讲一下display:-moz-inline-stack这句话吗?网上没查到讲得比较清楚的资料。 参考:  跨浏览器的inline-block
firefox 2 不支持 inline-block,但是它支持 mozilla 特有的显示属性 ‘-moz-inline-stack’,这个属性和 inline-block 比较像。把它加在 display: inline-block 之前,ff2 会忽略 inline-block 而保留 -moz-inline-stack,因为它不认识 inline-block。支持 inline-block 的浏览器会使用 inline-block 而忽略之前的显示属性。
大神,能帮我讲一下display:-moz-inline-stack这句话吗?网上没查到讲得比较清楚的资料。
其它类似信息

推荐信息