📜  使用 HTML、CSS 和 Bootstrap 创建响应式网格香草

📅  最后修改于: 2021-08-30 10:00:05             🧑  作者: Mango

许多现代网站使用网格系统在其主页和其他页面上显示数据块。网格在很大程度上类似于表格,但是,它在视觉上更具吸引力,并且最常显示同级元素。网格必须是响应式的,即它应该适应用户的屏幕尺寸。

Bootstrap是一个非常流行的开源HTMLCSSJavaScript库,可帮助设计网站的前端。一般来说,引导代码非常紧凑和健壮,但每个开发人员都应该掌握 Vanilla(Customizable) HTML 和 CSS 的几个原因:

  • 大量的实用程序和组件从未使用过,因此是网页的负担。
  • Bootstrap 代码很难定制。
  • Bootstrap 会稍微减慢网站的下载速度,因为它首先加载 jQuery,然后引导 CSS,然后引导 JS。

创建网格的两种可能方法:

1. 没有 Bootstrap 的网格(Vanilla HTML CSS)

HTML 代码:我们从定义三个 div 开始,每个 div 都有类“ customRow ”。然后在每个 customRow div 中创建一个 img 标签。

HTML


  

  geeksforgeeks vanilla grid
    
  
  

  

  
  
                                            
  
                              
  
                                            
     


CSS
img{
    width: 14%;
}
  
/* 40px margin on top and bottom, 
   zero margin on left and right*/
.customRow{
    margin: 40px 0; 
    text-align: center;
}


HTML


    
        
        
        
  
        
        
        
        
        Geeksforgeeks grid with bootstrap
    
    
        
        
                         
                
                                     
                
                                     
                
                                     
                
                                     
                
                                     
            
                         
                
                                     
                
                                     
                
                                     
            
                         
                
                                     
                
                                     
                
                                     
                
                                     
                
                                     
            
        
                                           


CSS
.row{
    margin: 40px 0;
}
img{
    width: 100%;
}


CSS 代码:大部分样式都是预定义的。但是,我们必须将每个图像的宽度设置为“ customRow ”的百分比,以便它们具有响应性,即它们的宽度随着屏幕尺寸的变化而变化。我们为行设置了一些非零边距,这样它们就不会相互粘连。最后,我们使用 text-align属性将所有图像对齐到屏幕中心。

CSS

img{
    width: 14%;
}
  
/* 40px margin on top and bottom, 
   zero margin on left and right*/
.customRow{
    margin: 40px 0; 
    text-align: center;
}

输出:

2. 使用 Bootstrap 网格

HTML 代码:首先,我们需要从其官方网站复制 bootstrap starter 模板。此模板包含引导CDN、 jQuery CDN、 popper.js CDN 和引导JavaScript 文件。为了方便,我把它放在这里。

然后我们开始通过创建一个div来构建我们的网格 类容器。这个 div 将包装我们所有的行,然后 对于每一行,我们:

  1. 用类行创建一个div
  2. 在这个“行 div”中,创建与所需列数一样多的div ,并为这些列 div 中的每一个提供一个 col-* 类。这里星号(*) 类似于列的宽度。任何屏幕的总宽度设置为12,这个总宽度在列之间被平均或不相等地划分。在第一行中,定义了 5 列,每列宽度为 2,总共 10 列,其余 2(12-10) 用作空格。
  3. 然后根据需要放置图片标签
  4. 对于中心,每行中的图像,将引导类justify-content-center 添加到每个“行 div ”。
  5. 在标题中放置一个指向自定义 CSS 文件的链接(此处为 gfgBootstrapGrid.css)。

HTML



    
        
        
        
  
        
        
        
        
        Geeksforgeeks grid with bootstrap
    
    
        
        
                         
                
                                     
                
                                     
                
                                     
                
                                     
                
                                     
            
                         
                
                                     
                
                                     
                
                                     
            
                         
                
                                     
                
                                     
                
                                     
                
                                     
                
                                     
            
        
                                           

CSS 代码:首先我们需要给每一行留出边距,以避免它们粘连。为此,我们附加了bootstrap 的行类,并为其设置了“上下40px”和“0左右”的边距。我们还调整每个图像标签的大小以获取其父元素的 100%(此处为“列 div”),这使图像具有响应性

CSS

.row{
    margin: 40px 0;
}
img{
    width: 100%;
}

输出:

两种方法的区别:

  1. 正如代码所反映的那样,对于小型项目(比如这个),自定义 CSS 是更好的选择。这是因为要完成的类和泛化较少,并且代码是专门为特定用例编写的。
  2. 但是,对于包含很多元素(例如登录页面、注册页面、主页等)的大型项目,一般边距和填充总是相同的。因此,使用引导程序将避免任何代码重复,因此是首选。
  3. 由于 Bootstrap 是一个预定义的库,因此与自定义 CSS 相比,出现错误代码的可能性要小得多。