CSS "overflow" изгоняет "background-color"

Я пытаюсь стилизовать блоки кода для сайта. Контейнер div настроен на переполнение как по вертикали, так и по горизонтали. Проблема в том, что когда он переполняется по горизонтали, зеброво-полосатый фоновый цвет обрезается. Я пробовал и с фоновым изображением, но оно тоже сбрасывается. Почему это происходит и как это исправить?

Спасибо.

Изображение: http://zero.robotrenegade.com/q3w/background-overflow.png

Веб-страница (уменьшите ширину браузера, чтобы увидеть проблему): http://zero.robotrenegade.com/q3w/code.html




    
    
    
    
    
    
    
    
    





void idAF::Restore( idRestoreGame *savefile ) {
    savefile->ReadObject( reinterpret_cast( self ) );
    savefile->ReadString( name );
    savefile->ReadBool( hasBindConstraints );
    savefile->ReadVec3( baseOrigin );
    savefile->ReadMat3( baseAxis );
    savefile->ReadInt( poseTime );
    savefile->ReadInt( restStartTime );
    savefile->ReadBool( isLoaded );
    savefile->ReadBool( isActive );

    animator = NULL;
    modifiedAnim = 0;

    if ( self ) {
        SetAnimator( self->GetAnimator() );
        Load( self, name );
        if ( hasBindConstraints ) {
            AddBindConstraints();
        }
    }

    savefile->ReadStaticObject( physicsObj );

    if ( self ) {
        if ( isActive ) {
            // clear all animations
            animator->ClearAllAnims( gameLocal.time, 0 );
            animator->ClearAllJoints();

            // switch to articulated figure physics
            self->RestorePhysics( &physicsObj );
            physicsObj.EnableClip();
        }
        UpdateAnimation();
    }
}

26
задан Obsidian 14 December 2011 в 23:15
поделиться

5 ответов

Попробуйте float:left на .codeblock pre. Работает в Firefox

<pre> умещается внутри контейнера .codeblock, как будто места больше нет. float делает ваш элемент <pre> достаточно широким, чтобы соответствовать его содержанию.

ОБНОВЛЕНИЕ

.codeblock pre {
    float: left;
    min-width: 100%;}

Работает в Firefox, Opera, IE9 и WebKit

Насколько я понимаю, его элементы внутри контейнера с overflow:auto помещаются внутри видимой области по умолчанию. Ширина этих элементов width:100% равна ширине внешнего контейнера. В этом примере внутри внутреннего контейнера у вас есть тег code, который не разбивает строки, поэтому текст выходит за пределы внутреннего контейнера и заставляет внешний контейнер показывать свитки. Чтобы избежать этого, вам нужен внутренний контейнер, чтобы соответствовать его содержимому, поэтому float:left.

Но, как вы умно заметили (а я нет), таким образом, он не будет расширяться, если внешний контейнер будет шире, чем код, поэтому во избежание необходимости использовать min-width:100% для использования внутреннего контейнера по крайней мере, все видимое пространство внутри внешнего контейнера.

6
ответ дан 28 November 2019 в 17:30
поделиться

Линии расширяются как каждый элемент блока до максимальной ширины - и это без переполнения. И они не связаны - если кто-то больше, это не влияет на других.

Попробуйте изменить их на что-то другое, чем блочный элемент, например:

.codeblock pre code .line {
    display: table-row;
}

Связанные с таблицей типы изменяют ширину или высоту (ячейки) вместе

http: // jsfiddle.net/D7rND/

1
ответ дан 28 November 2019 в 17:30
поделиться

Попробуйте:

.codeblock pre, .codeblock pre code {
  display: inline-block;
}

Это сработало для меня в Safari.

1
ответ дан 28 November 2019 в 17:30
поделиться

Используйте правильный формат DTD. Это хорошо для Firefox, хотя ...

0
ответ дан 28 November 2019 в 17:30
поделиться

Я только что добавил {float:left} к div'ам, чьи предыстории были «забракованы» в моей ситуации.

С этим изменением фон и границы будут расширяться с переполненным текстом. Поэтому при горизонтальной прокрутке текст отображается равномерно с тем же фоном и границами.

Перед добавлением этого фрагмента CSS фон / граница не будут выходить за пределы div, хотя текст будет.

0
ответ дан 28 November 2019 в 17:30
поделиться