以块显示格式居中HTML / CSS中的多个对象[重复]

Posted

技术标签:

【中文标题】以块显示格式居中HTML / CSS中的多个对象[重复]【英文标题】:Centering multiple objects in HTML/CSS in block display format [duplicate] 【发布时间】:2020-12-19 04:28:23 【问题描述】:

我有两个画布元素,“canvas1”和“canvas2”,在 div 内,“container”。我试图让这些画布元素以基本的display: block; 格式显示,就像它们通常自动格式化一样,但是当尝试将 div 或元素单独居中时,它总是会产生古怪的结果。

画布“canvas3”的 CSS 代码可以正常工作以使其居中,但当应用于 div 时,其中的画布元素不会移动。

html

<!DOCTYPE html>
<html>

<head>
    <title>Position</title>
</head>


<body>
    <div id="container">Hello
        <canvas id="canvas1"></canvas>
        <canvas id="canvas2"></canvas>
    </div>

    <canvas id="canvas3"></canvas>

    <style>
        #container 
            margin-left: auto;
            margin-right: auto;
        
        
        canvas 
            height: 150px;
            width: 150px;
            border: 2px solid black;
            display: block;
        
        
        #canvas1 
            background-color: khaki;
        
        
        #canvas2 
            background-color: springgreen;
        
        
        #canvas3 
            background-color: navajowhite;
            margin: auto;
            right: 0;
            left: 0;
            top: 0;
            bottom: 0;
        
    </style>
</body>

</html>

注意:运行 sn-p 时,请确保查看完整页面。

用于实现此目的的方法不需要包含任何内容,但需要包含使用块显示属性的 2 个画布元素,或产生相同外观的其他方法。上面显示的尝试在 div 中包含画布元素,但我不确定这是否是实现目标的最佳方法。任何帮助将不胜感激。

The result needs to look like this.

【问题讨论】:

你只是在#canvas1#canvas2 样式中缺少margin:auto;(或者如果你希望它适用于它们,你可以将它添加到canvas 【参考方案1】:

margin:auto 添加到canvas 样式,我更改了#container,如下所述。

    <!DOCTYPE html>
    <html>
    
    <head>
        <title>Position</title>
    </head>
    
    
    <body>
        <div id="container">Hello
            <canvas id="canvas1"></canvas>
            <canvas id="canvas2"></canvas>
            <canvas id="canvas3"></canvas>
        </div>
    
        <style>
            #container 
                position: absolute;
                left: 50%;
                top: 50%;
               -webkit-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);
             
            
            canvas 
                height: 150px;
                width: 150px;
                border: 2px solid black;
                display: block;
                margin: auto;
            
            
            #canvas1 
                background-color: khaki;
            
            
            #canvas2 
                background-color: springgreen;
            
            
            #canvas3 
                background-color: navajowhite;
                right: 0;
                left: 0;
                top: 0;
                bottom: 0;
            
        </style>
    </body>
    
    </html>

【讨论】:

是否可以让 2 个画布与窗口顶部和底部的距离相等?这个版本我已​​经遇到过,但我希望有一种方法可以使画布与顶部和底部边缘之间的距离相等 我不清楚。您是指画布之间的空隙吗? 我希望它能够像我发布的图片一样循环播放。第二个画布的底部和窗口的底部之间有很大的间隙,而页面顶部和窗口的顶部之间的间隙非常小。我希望距离相等 我已经编辑了我的代码。你可以试试这个。【参考方案2】:
#container 
    display: flex;
    flex-direction: column;

#canvas1 
    background-color: khaki;
     margin: 0 auto;

            
#canvas2 
     background-color: springgreen;
      margin: 0 auto;

            

【讨论】:

这只是将画布拉伸到屏幕两侧? 查看编辑后的版本

以上是关于以块显示格式居中HTML / CSS中的多个对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

CSS实现垂直居中的5种方法

如何用css显示一个图片中多个小图标?

在网页制作中如何控制DIV居中显示,用CSS怎么控制背景图片大小?

怎么让ul中的li居中显示?

用css改变table中的td居中问题

Pandas DataFrame 到 HTML:格式化值以显示居中