css 如何使用Bootstrap Grid系统在大屏幕上修复图片和进度条之间的空白?

e5nqia27  于 2023-06-07  发布在  Bootstrap
关注(0)|答案(1)|浏览(200)

x1c 0d1xlet首先向您展示这张图片中的想法:图片(1)在这张图片中,我们看到在md/lg屏幕中进度条在图片下方,文本在其右侧。

在图片(2)中,文本是第二个,进度条是最后一个,屏幕尺寸很小:

我尝试做的是这样的代码:

<!DOCTYPE html>
<html lang="fr">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mon cv - </title>
    <link rel="stylesheet" href="style.css">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="container">
        <!--main container-->
        <header>
            <h1>Bentouhami Faisal</h1>
        </header>

        <!-- Menu Navbar-->
        <nav class="navbar navbar-expand-lg bg-body-tertiary">
            <a class="navbar-brand" href="index.html">Mon Portfolio</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
                data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
                aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarSupportedContent">
                <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                    <li class="nav-item">
                        <a class="nav-link" href="formation.html">Formations</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="exprience.html">Expérience</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="contact.html">Contact</a>
                    </li>
                </ul>
            </div>
        </nav>
    </div>
    <!--end Navbar-->

    <!--header container-->
    <div class="container">
        <div class="row row-cols-auto">
                    <!-- Picture -->
                    <div class="col-sm-12 col-md-3">
                        <img src="images/mon_cv_photo.jpg" alt="Photo de Portfolio" class="rounded-circle">    
                    </div>
      
                    <div class="col-sm-8">
                        <h2 class="intro-text"> 
                            <p><b> Développeur Full Stack</b></h2></p>
                        <p class="intro-text">
                                36 ans <br> tant que développeur Full Stack, je possède une expertise complète dans
                                la
                                conception, le développement et la maintenance d'applications web. <br> Avec une solide
                                formation en informatique de gestion et une passion pour la programmation, je suis
                                capable
                                de
                                gérer tous les aspects d'un projet, tant sur le plan front-end que back-end.

                                Grâce à ma maîtrise des langages de programmation tels que HTML, CSS, JavaScript, ainsi
                                que des frameworks populaires tels que React et Angular, je peux créer des interfaces
                                utilisateur attrayantes et réactives.<br>

                                En tant que Full Stack développeur, je suis également à l'aise avec les technologies de
                                développement back-end telles que Node.js et Python, ce qui me permet de créer des API
                                performantes et de mettre en place des architectures logicielles robustes. <br>Je suis
                                également
                                familier avec les concepts de déploiement et d'hébergement, et je peux travailler avec
                                des
                                outils tels que Docker et AWS pour assurer une mise en production fluide et sécurisée.

                                <br>En résumé, en tant que développeur Full Stack, je suis en mesure de concevoir,
                                développer et
                                optimiser des applications web complètes, offrant une expérience utilisateur
                                exceptionnelle
                                et
                                des fonctionnalités performantes. Je suis passionné par mon métier et je m'efforce
                                constamment
                                de rester à jour avec les dernières tendances et les meilleures pratiques du
                                développement
                                web.
                        </p>
                    </div>
                 </div>      
                    <!-- Progression bars -->
                    <div class="row">
                        
                    </div>
                    <div class="col-3">
                        <div class="row">
                            <div class="col-3">
                                <img src="images/java.png" alt="Java" class="img-fluid">
                            </div>
                            <div class="col-9">
                                <div class="progress">
                                    <div class="progress-bar" role="progressbar" style="width: 80%;" aria-valuenow="80"
                                        aria-valuemin="0" aria-valuemax="100">80%</div>
                                </div>
                            </div>
                        </div>

                        <!-- Compétence : C# -->
                        <div class="row">
                            <div class="col-3">
                                <img src="images/c-sharp.png" alt="C#" class="img-fluid">
                            </div>
                            <div class="col-9">
                                <div class="progress">
                                    <div class="progress-bar" role="progressbar" style="width: 70%;" aria-valuenow="70"
                                        aria-valuemin="0" aria-valuemax="100">70%</div>
                                </div>
                            </div>
                        </div>

                        <!-- Compétence : HTML -->
                        <div class="row">
                            <div class="col-3">
                                <img src="images/html-5.png" alt="HTML" class="img-fluid">
                            </div>
                            <div class="col-9">
                                <div class="progress">
                                    <div class="progress-bar" role="progressbar" style="width: 90%;" aria-valuenow="90"
                                        aria-valuemin="0" aria-valuemax="100">90%</div>
                                </div>
                            </div>
                        </div>

                        <!-- Compétence : CSS -->
                        <div class="row">
                            <div class="col-3">
                                <img src="images/css-3.png" alt="CSS" class="img-fluid">
                            </div>
                            <div class="col-9">
                                <div class="progress">
                                    <div class="progress-bar" role="progressbar" style="width: 85%;" aria-valuenow="85"
                                        aria-valuemin="0" aria-valuemax="100">85%</div>
                                </div>
                            </div>
                        </div>

                        <!-- Compétence : Bootstrap -->
                        <div class="row">
                            <div class="col-3">
                                <img src="images/bootstrap.png" alt="Bootstrap" class="img-fluid">
                            </div>
                            <div class="col-9">
                                <div class="progress">
                                    <div class="progress-bar" role="progressbar" style="width: 75%;" aria-valuenow="75"
                                        aria-valuemin="0" aria-valuemax="100">75%</div>
                                </div>
                            </div>
                        </div>

                        <!-- Compétence : Php -->
                        <div class="row">
                            <div class="col-3">
                                <img src="images/php.png" alt="Php" class="img-fluid">
                            </div>
                            <div class="col-9">
                                <div class="progress">
                                    <div class="progress-bar" role="progressbar" style="width: 75%;" aria-valuenow="70"
                                        aria-valuemin="0" aria-valuemax="100">75%</div>
                            
                            </div>
                        </div>
                </div>
                </div>
                </div>
            </div>
        </div>
    </div>
</div>

        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"
            integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous">
        </script>
        <!--end 1st container-->
</body>
</html>

在进度条应该在的地方用红色表示。
问题是,当我在大屏幕上,文本太大,这puches的progressionn行的方式下创建一个blanc白色之间的图片和进度条!看看这个屏幕:

xggvc2p6

xggvc2p61#

一种方法来实现这一点 “使用Bootstrap的网格系统”(实际上,它并不完全是一个网格系统,而是一个灵活的)是在代码中放置两次进度条(一次在图片之后,一次在文本之后),并使用显示实用程序类(v4文档,v5文档)显示/隐藏它们。
图片下面的应该有.d-none.d-md-block,文本下面的应该有.d-block.d-md-none
如果您希望mdsm在不同的断点处交换,请将它们更改为smlg
如果应用此方法的元素的默认显示为“flex”,则将*-block交换为*-flex类。
看到它工作here
或者,您可以复制文本(而不是进度条)并应用相同的技术。

备注:

  • 该技术的主要缺点是它使将事件监听器应用到复制的元素或其后代/将事件监听器移除到复制的元素或其后代过于复杂。

然而,一些前端框架(Vue,React)提供了内置的“门户”组件,本质上,这些组件能够基于控制器逻辑将其内容呈现在目标元素中,放置在DOM中的不同位置,而不会丢失事件(元素不会被破坏,而是被移动)。据我所知,Angular并没有提供开箱即用的功能。不过,可能有一个插件。

  • 如果这三个元素都是同一个父元素的子元素,那么使用定制的CSS也可以实现这种布局,在父元素上使用display: grid,并相应地定义grid-template-areas(或grid-template-rowsgrid-template-columns)。但这意味着放弃Bootstrap的网格系统,并且必须编写自己的CSS来响应控制列宽。
  • 从你所做的草图来看,如果你想让文本在移动的上滚动,而图片是固定在顶部,进度条是固定在底部,这一点并不清楚。这无疑会产生令人质疑的UX。在移动的设备上更好的用户体验是让整个页面可滚动。
  • 您的标记(HTML)无效:你关闭标题的<h2>太快,你也没有关闭所有布局<div>正确。原则上,IDE应该为您突出显示这些。最有可能的是,如果你提交了面试/工作申请的代码,你会因为没有使用IDE而被取消资格(或者不知道如何设置它-对于雇主来说,它们意味着同样的事情)。
  • 其他标记问题:不要在<h*>元素中使用<p>(反之亦然);不要在同一个<p>元素中放置多个段落,并避免使用<br>标签;永远不要把一个.row作为另一个.row的直接子节点(你应该把它 Package 在一个.col中)。并确保您的代码通过HMTL验证。

我已经修复了上面提供的示例中提到的所有内容。

相关问题