Как удалить раздражающие вертикальные пробелы, которые блокируют ширину, чтобы соответствовать размеру экрана?

#python #html #css #plotly-dash

#python #HTML #css #плотный тире

Вопрос:

У меня есть приложение Django-Dash-Plotly, я пытаюсь решить проблему, которая у меня есть, когда справа от экрана появляется полоса белого. Посмотрите на картинку ниже, обратите внимание на небольшое, но дополнительное количество пустого пространства, из-за которого мой адаптивный макет допускает дополнительную прокрутку по ширине (я хочу, чтобы мое приложение соответствовало размеру экрана).

Существуют ли какие-либо свойства HTML или CSS, которые неосознанно добавляют это пустое пространство?

введите описание изображения здесь

Вот мой макет Dash и мета-теги HTML

 app = DjangoDash('StockBuckets', add_bootstrap_links=True, external_stylesheets=[dbc.themes.LUX], suppress_callback_exceptions = True,  meta_tags=[
        {"name": "viewport", "content": "width=device-width, initial-scale=1, maximum-scale=1.2, minimum-scale=0.5"}])



body = html.Div(
    [dbc.Jumbotron(
    [
        dbc.Container(dcc.Dropdown(id="dynamic-dropdown", options=options, multi=True, placeholder="Enter Symbols of Interest"),
 
        fluid=True
        )

    ], 
     style = {'background-color': '#68d984'}, fluid=True,
)
   
    , dbc.Row(dbc.Col(html.Div([  
                                   ],id='output-graph'),lg=8, md=11, xs=12),justify="center")


    , html.Div(style={"width":"100%", "height":'25px'})


    , dbc.Row([
            dbc.Col(children=[  
                                ],id='quickfacts',lg=4, md=11, xs=12)

          , dbc.Col(children=[
                                ], id='returnrates',lg=7, md=11, xs=12)
                                                                        ], justify="center", align="center")
    , html.Div(style={"width":"100%", "height":'25px'})

     , dbc.Row(dbc.Col(children=[
                                ], id='advancedstats', lg=11, md=11, xs=12), justify="center",  align="center")


    , html.Div(style={"width":"100%", "height":'25px'})


    , dbc.Row([dbc.Col(children=[
                                ],id= 'nextreport',lg=4, md=4, xs=12)

           , dbc.Col(children=[
                                ],id='nextdividend',lg=4, md=4, xs=12)
            ], justify="center"),
       ])
  

мой index.html файл для Django

 {% extends 'base.html' %}

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

  <head>
  {% load plotly_dash %}
  {% plotly_header %}

  </head>


  <body>
  {% block page_content %}
    <div class="container">
      <div class="row">
        <div class="col-lg-12 text-center">
          <h1 class="mt-5">Compare Equities in the SP500</h1>
          <p class="lead">Invest smarter, use data to your advantage <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-lightning" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
    <path fill-rule="evenodd" d="M11.251.068a.5.5 0 0 1 .227.58L9.677 6.5H13a.5.5 0 0 1 .364.843l-8 8.5a.5.5 0 0 1-.842-.49L6.323 9.5H3a.5.5 0 0 1-.364-.843l8-8.5a.5.5 0 0 1 .615-.09zM4.157 8.5H7a.5.5 0 0 1 .478.647L6.11 13.59l5.732-6.09H9a.5.5 0 0 1-.478-.647L9.89 2.41 4.157 8.5z"/>
  </svg> </p>
          <!--<ul class="list-unstyled">
            <li> <span class="badge badge-primary">New</span> features coming soon.</li>
          </ul> -->
        </div>
      </div>
    </div>
    

      
        {% plotly_direct name='StockBuckets' %} 
      
  </body>
     {% plotly_footer %}
  {% endblock %}

</html>


  

Поскольку я использую Dash, код HTML и CSS немного растянут. Чтобы упростить задачу, вот некоторые другие стили CSS, которые я использую margin-top , margin-left , padding , width .

Был бы очень признателен за то, как избавиться от этого раздражения! Спасибо.

Редактировать:

Обнаружена проблема с двумя элементами div: введите описание изображения здесь

Обратите внимание на 405 пикселей для ширины? Когда экран устройства, который я использую, равен 375px. Это то же самое для следующего div ниже этого. Я играю с заполнением и размером экрана, но я понятия не имею, почему у этих двух html.Div() есть дополнительная ширина…

Комментарии:

1. Я подозреваю, что это вызвано тем, что один из ваших дочерних элементов имеет большую ширину, чем родительский. Попробуйте проверять по одному элементу за раз в режиме инспектора, чтобы вы могли узнать, у которого больше ширина, отступы и т. Д. Предоставьте рабочий пример или воспроизводимый код, чтобы можно было более конкретно рассказать о проблеме.

2. @AmarenderReddy Спасибо за ваш комментарий. В настоящее время я проверяю элементы с помощью инструментов разработчика Google Chrome, хотел бы я предоставить некоторый воспроизводимый код, чтобы помочь.

3. Итак, я вижу, что некоторые из html.Div() них имеют большую ширину, чем экран. Знаете ли вы, почему это произойдет автоматически?

4. Вы должны быть на правильном пути, используя Inspect. Быстрый совет: нажмите Del на каком-нибудь корневом элементе. Вы можете нажать Ctrl Z , чтобы отменить. Но для меня я просто пытаюсь удалять все, пока не увижу желаемое изменение, затем вы медленно приближаетесь к дочерним элементам, и в конечном итоге вы найдете виновника. Иногда проблема возникает не из-за одного элемента, а из-за взаимодействия нескольких элементов.

5. Я нашел виновника, их два. Пожалуйста, посмотрите Мой пост OG, может быть, вы знаете, почему два элемента div имеют дополнительную ширину на 30 пикселей больше…

Ответ №1:

Это из-за минимальной ширины, указанной где-то. Выберите элемент с шириной 405 пикселей и добавьте минимальную ширину: сбросить значение;

Комментарии:

1. Итак, я внес эти изменения, ничего не изменилось. Грустное лицо.

2. Используете ли вы какую-либо библиотеку, такую как bootstrap. Если это так, используйте min-width: unset !важно;

3. Да, я использую bootstrap, я думал, что исправил это, изменив размер меньших экранов (в стилях начальной загрузки) с 12 на 11. Но на самом деле я был неправ. Мне не удалось это исправить.

4. Хорошо, я просто решил это, добавив style = {'width': '100vw'} к каждому компоненту начальной загрузки в моем приложении Dash.

5. Я бы посоветовал не указывать width: 100vw для каждого элемента. Просто укажите требуемую ширину для родительского элемента и добавьте ширину: 100% к дочерним компонентам. Если вы это сделали, проигнорируйте мой комментарий.