Javascript 如何获得相等的列?
我有一个megamenu类,用于电子商务web应用程序的类别菜单Javascript 如何获得相等的列?,javascript,php,html,css,Javascript,Php,Html,Css,我有一个megamenu类,用于电子商务web应用程序的类别菜单 class categories { var $categorie; var $tabs; var $subcategorie; var $website; var $coloane = 3; var $randuri = 10; function tabs(){ global $pdoconnect; $stmt = $pdoc
class categories {
var $categorie;
var $tabs;
var $subcategorie;
var $website;
var $coloane = 3;
var $randuri = 10;
function tabs(){
global $pdoconnect;
$stmt = $pdoconnect->query("SELECT * FROM taburi WHERE vizibil = '1' ORDER BY ordine ASC");
$tabs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$tabs_c = $stmt->rowCount();
$return = "";
if($tabs_c > 0){
$i = 1;
$return .= "\n<ul class=\"tabs\">\n";
foreach($tabs as $t){
$return .= "\t<li class=\"level0\">\n";
$return .= "\t\t<div class=\"tab-title\">\n";
$return .= "\t\t\t<span class=\"tab-image\">\n";
$return .= "\t\t\t\t".'<img src="'.$this->website.'/media/taburi/'.$t['logo'].'" />'."\n";
$return .= "\t\t\t</span>\n";
$return .= $t['nume'];
$return .= "\t\t</div>\n";
$return .= "\t".'<div class="level1 hmm-megamenu-box">'."\n";
$return .= $this->categorie($t['id']);
$return .= "\t</div>\n";
$return .= "\t</li>\n";
}
$return .= "</ul>";
}
return $return;
}
function categorie($tab){
global $pdoconnect;
$return = "";
$stmt = $pdoconnect->prepare("SELECT * FROM categorii WHERE tab =:tab AND vizibil='1'");
$stmt->bindValue(':tab', $tab, PDO::PARAM_INT);
$stmt->execute();
$categorie = $stmt->fetchAll(PDO::FETCH_ASSOC);
$categorie_c = $stmt->rowCount();
if($categorie_c > 0){
$i = 0;
$return .= "<div class=\"hmm-megamenu-block\">\n";
foreach ($categorie as $cat) {
$return .= "\t<div class=\"hmm-megamenu-column\">\n";
// if($i % 2 == 0 && !empty($i) && $this->countSubcategorii($cat['categorie']) <= $this->randuri){
// $return .= "</div><div class=\"hmm-megamenu-column\">\n";
// }
$return .= "\t\t\t<a class=\"head-list\">".$cat['categorie']."<i class=\"fa fa-chevron-right\" style=\"font-size: 8px; margin-left: 5px;\"></i></a>\n";
$return .= $this->subcategorie($cat['categorie']);
$return .= "\t\t</div>\n";
$i++;
}
$return .= "</div>";
}
return $return;
}
function subcategorie($cat){
global $pdoconnect;
$return = "";
$stmt = $pdoconnect->prepare("SELECT * FROM categorii WHERE categorie=:categorie AND subcategorie IS NOT NULL");
$stmt->bindValue(':categorie', $cat, PDO::PARAM_STR);
$stmt->execute();
$subcategorie = $stmt->fetchAll(PDO::FETCH_ASSOC);
$subcategorie_c = $stmt->rowCount();
if($subcategorie_c > 0){
foreach ($subcategorie as $scat) {
$return .= "\t".'<a href="'.$this->website.'/c/'.strtolower($scat['seo']).'">'.$scat['subcategorie'].'</a>'."\n";
}
}
return $return;
}
}
类别{
var$分类;
var$tabs;
var$子类别;
var$网站;
var$路环=3;
var$randuri=10;
函数选项卡(){
全球$pdoconnect;
$stmt=$pdoconnect->query(“从taburi中选择*,其中vizibil='1'ORDER BY ordine ASC”);
$tabs=$stmt->fetchAll(PDO::FETCH_ASSOC);
$tabs_c=$stmt->rowCount();
$return=“”;
如果($tabs_c>0){
$i=1;
$return.=“\n\n”;
foreach($t){
$return.=“\t- \n”;
$return.=“\t\t\n”;
$return.=“\t\t\n”;
$return.=“\t\t\t.'website./media/taburi/'。$t['logo'].“/>.”“\n”;
$return.=“\t\t\n”;
$return.=$t['nume'];
$return.=“\t\t\n”;
$return.=“\t”。“\n”;
$return.=$this->categorie($t['id']);
$return.=“\t\n”;
$return.=“\t
\n”;
}
$return.=“
”;
}
return$return;
}
功能分类($tab){
全球$pdoconnect;
$return=“”;
$stmt=$pdoconnect->prepare(“从categorii中选择*,其中tab=:tab和vizibil='1');
$stmt->bindValue(':tab',$tab,PDO::PARAM_INT);
$stmt->execute();
$categorie=$stmt->fetchAll(PDO::FETCH_ASSOC);
$categorie_c=$stmt->rowCount();
如果($categorie_c>0){
$i=0;
$return.=“\n”;
foreach($分类为$cat){
$return.=“\t\n”;
//如果($i%2==0&&!空($i)&&$this->countSubcategorii($cat['categorie'])randuri){
//$return.=“\n”;
// }
$return.=“\t\t\t.”“\n”;
}
}
return$return;
}
}
目前,菜单项如下所示
但预期的结果应该是
仅使用php如何获得此结果?我怀疑问题有两个方面,即样式和HTML标记 从样式的角度来看,当前布局或多或少是一个网格。在CSS中,您需要更流畅的内容 为了实现这一点,您可能需要预先计算列,以便知道您正在将总共有Y个项目的X个组均匀分布到3列中。这使您可以处理一个组的项目可能超过菜单高度的情况(需要溢出)。
function categorie($tab){
global $pdoconnect;
$return = "";
$stmt = $pdoconnect->prepare("SELECT * FROM categorii WHERE tab =:tab AND vizibil='1'");
$stmt->bindValue(':tab', $tab, PDO::PARAM_INT);
$stmt->execute();
$categorie = $stmt->fetchAll(PDO::FETCH_ASSOC);
$categorie_c = $stmt->rowCount();
$return .= "<div class=\"hmm-megamenu-block\">\n";
if($categorie_c > 0){
$i = 1;
$return .= "\t<div class=\"hmm-megamenu-column\">\n";
foreach ($categorie as $cat) {
if($i % 3 == 0 && !empty($i) && $this->countSubcategorii($cat['categorie']) <= $this->randuri){
$return .= "</div><div class=\"hmm-megamenu-column\">\n";
}else if($i % 3 == 0 && !empty($i) && $this->countCategorii($tab) >= $this->coloane){
$return .= "</div><div class=\"hmm-megamenu-column\">\n";
}else if($i % 2== 0 && $this->countCategorii($tab) == 2){
$return .= "</div><div class=\"hmm-megamenu-column\">\n";
}
$return .= "\t\t\t<a class=\"head-list\">".$cat['categorie']."<i class=\"fa fa-chevron-right\" style=\"font-size: 8px; margin-left: 5px;\"></i></a>\n";
$return .= $this->subcategorie($cat['categorie']);
$i++;
}
$return .= "</div>";
}
$return .= "</div>";
return $return;
}
功能分类($tab){
全球$pdoconnect;
$return=“”;
$stmt=$pdoconnect->prepare(“从categorii中选择*,其中tab=:tab和vizibil='1');
$stmt->bindValue(':tab',$tab,PDO::PARAM_INT);
$stmt->execute();
$categorie=$stmt->fetchAll(PDO::FETCH_ASSOC);
$categorie_c=$stmt->rowCount();
$return.=“\n”;
如果($categorie_c>0){
$i=1;
$return.=“\t\n”;
foreach($分类为$cat){
如果($i%3==0&&!空($i)&&$this->countSubcategorii($cat['categorie'])randuri){
$return.=“\n”;
}否则如果($i%3==0&&!空($i)&$this->countCategorii($tab)>=$this->coloane){
$return.=“\n”;
}如果($i%2==0&&$this->countCategorii($tab)==2),则为else{
$return.=“\n”;
}
$return.=“\t\t\t”。$cat['categorie']”“\n”;
$return.=$this->subcategories($cat['categorie']);
$i++;
}
$return.=“”;
}
$return.=“”;
return$return;
}
这真的不是一个CSS问题吗?不是的,我需要用phpAnd来做这件事,这条评论告诉我,在实际编码任何东西之前,你应该读很多书,年轻的学徒^^^你可以在数组上使用php中的count函数(),然后除以三(如果你有三列),但这在CSS中更像一层。