Ограничение ширины текста внутри блока в CSS

#html #css

#HTML #css

Вопрос:

У меня есть веб-сайт со следующей настройкой:

 .container {
    margin: 0 auto;
    max-width: 960px;
}

.containerInner {
    border: 1px solid #D0D0D0;
    margin: 0 20px;
    box-shadow: 0 0 8px #D0D0D0;
    -webkit-box-shadow: 0 0 8px #D0D0D0;
}

div.body {
    margin: 0 30px 30px 30px;
}

h2 {
    color: #444444;
    background-color: transparent;
    margin: 0 0 15px 0;
    padding: 10px 15px 8px 15px;
    font-family: "HelveticaLight", sans-serif;
    font-weight: 100;
    font-size: 30px;
    line-height: 32px;
    padding: 15px;
    margin: 0 0 30px 0;
    border-bottom: 1px solid #D0D0D0;
}

code {
    font-family: Consolas, Monaco, Courier New, Courier, monospace;
    font-size: 13px;
    color: #3365A2;
    background-color: #f9f9f9;
    border: 1px solid #D0D0D0;
    display: block;
    margin: 14px 0 14px 0;
    padding: 6px 10px 6px 10px;
} 
 <div id="container" class="container">
  <div id="Demo" class="containerInner">
    <h2>Demo</h2>
    <div class="body">
<pre><code>stuff {
  this is a very very very very very very very very loooooooooooooooong line of code or possibly something other than code but that still needs to be in a code tag
}</code></pre>
    </div>
  </div>
</div> 

Проблема здесь в том, что строки, подобные этой, <code> могут выходить за пределы их блока кода и их контейнера, что также приводит к расширению веб-страницы и созданию горизонтальной полосы прокрутки для всей страницы, чего я не хочу. Я бы хотел, чтобы вместо этого (в порядке предпочтения) либо:

  1. иметь прокручиваемый блок кода (очень похожий на те, что здесь, на SO); или
  2. автоматически переносить текст каким-либо разумным образом; или
  3. просто отрежьте (т. Е. Прекратите отображение) текст в конце блока кода (однако он все равно должен быть доступен для копирования полностью).

Как бы мне обойти одно из 3 решений, если это возможно, без чрезмерного написания сценариев?

Ответ №1:

Просто добавьте style="overflow: scroll;" в блок кода. В качестве альтернативы вы можете добавить style="overflow: auto;" , который создаст полосу прокрутки только в случае переполнения содержимого.

(Примечание: вы также можете добавить его в часть CSS, но я сделал его встроенным, просто чтобы выделить, где он находится.)

 .container {
    margin: 0 auto;
    max-width: 960px;
}

.containerInner {
    border: 1px solid #D0D0D0;
    margin: 0 20px;
    box-shadow: 0 0 8px #D0D0D0;
    -webkit-box-shadow: 0 0 8px #D0D0D0;
}

div.body {
    margin: 0 30px 30px 30px;
}

h2 {
    color: #444444;
    background-color: transparent;
    margin: 0 0 15px 0;
    padding: 10px 15px 8px 15px;
    font-family: "HelveticaLight", sans-serif;
    font-weight: 100;
    font-size: 30px;
    line-height: 32px;
    padding: 15px;
    margin: 0 0 30px 0;
    border-bottom: 1px solid #D0D0D0;
}

code {
    font-family: Consolas, Monaco, Courier New, Courier, monospace;
    font-size: 13px;
    color: #3365A2;
    background-color: #f9f9f9;
    border: 1px solid #D0D0D0;
    display: block;
    margin: 14px 0 14px 0;
    padding: 6px 10px 6px 10px;
} 
 <div id="container" class="container">
  <div id="Demo" class="containerInner">
    <h2>Demo</h2>
    <div class="body">
<pre><code style="overflow: scroll;">stuff {
  this is a very very very very very very very very loooooooooooooooong line of code or possibly something other than code but that still needs to be in a code tag
}</code></pre>
    </div>
  </div>
</div> 

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

1. Ох. Ну, это было проще, чем я ожидал.