CSS неправильная рамка вокруг содержимого переменного размера? - PullRequest
1 голос
/ 26 марта 2009

Извиняюсь за этот набросок, но, кажется, лучше всего отвечаю на мой вопрос:

        +---------------+----------------+-----+
        |      div      |      v.div     |  d  |
        |               |                |  i  |
        +----+----------+----------------+  v  |
        | v  |                           |     |
        | .  |                           +-----+
        | d  |                           |  v  |
        | i  |            DIV            |  .  |
        | v  |         (content)         |  d  |
        |    |       variable size       |  i  |
        +----+                           |  v  |
        | d  |                           |     |
        | i  +------------------------+--+-----+
        | v  |          v.div         |   div  |
        +----+------------------------+--------+

Я пытаюсь выяснить CSS для 8 DIV, окружающих некоторый контент переменного размера. У каждого из этих DIV есть фоновое изображение, так что все это будет выглядеть как обрамленная картинкой рамка, обертывающая содержимое по центру. Внешние и особенно угловые DIV также должны быть прозрачными, поэтому некоторые приемы, которые я использовал для этого, не работают так хорошо. Очевидно, что DIV, отмеченный как v.div, должен расширяться, чтобы заполнить переменные высоту и ширину; угловые DIVs имеют фиксированный размер.

С некоторым вырезанием и вставкой изображений я мог бы ограничить проблему чем-то вроде этого, если предыдущий просто не может быть сделан:

        +---------------+--------------+-------+
        |      div      |      v.div   |  div  |
        |               |              |       |
        +----+----------+--------------+-+-----+
        | v  |                           |     |
        | .  |            DIV            |  v  |
        | d  |         (content)         |  .  |
        | i  |       variable size       |  d  |
        | v  |                           |  i  |
        |    |                           |  v  |
        +----+---+--------------------+--+-----+
        |   div  |         v.div      |  div   |
        +--------+--------------------+--------+

Кто-нибудь когда-либо делал что-то подобное, желая поделиться своим решением или альтернативным подходом?

Ответы [ 3 ]

1 голос
/ 26 марта 2009

Не может ли это быть решено с использованием цвета фона / фонового изображения, отступов и рамки?

<style>

#variableSize {padding: 1em;
               border: 3px solid #000;
               background-color: rgba(215,215,215,0.5);
               background-image: url(path/to/img.png);
               background-repeat: repeat;
               background-position: 0 0;
               -moz-border-radius: 2em;
               -webkit-border-radius: 2em;
              }

</style>

<div id="variableSize">
   <p>Variable size content.</p>
</div>

У него проблемы с совместимостью, я признаюсь, но использование rgba () можно заменить просто (частично) прозрачным png, чтобы обеспечить некоторую кросс-браузерную поддержку?

Я не совсем понимаю, как этот CSS приспосабливает содержимое переменного размера. Я полагаю, что как минимум есть 4 фиксированных деления изображения (углы) и 4 повторяющихся изображения (2 в X, 2 в Y). реальный вопрос в том, как расположить поплавки и как получить повторяющиеся деления для заполнения доступного пространства - Скотт Эверден

Кажется, я неправильно понял вопрос, к сожалению. Хотя мой приведенный выше пример работает / должен работать, он не предоставит углы изображения, которые вам нужны.

Если вы используете вышеупомянутое предложение, но содержите изображения в содержимом, чтобы служить углами изображения, то это может работать:

<style>

#variableSize {padding: 1em;
               border: 3px solid #000;
               background-color: rgba(215,215,215,0.5);
               background-image: url(path/to/img.png);
               background-repeat: repeat;
               background-position: 0 0;
               -moz-border-radius: 2em;
               -webkit-border-radius: 2em;
               position: relative;
              }

#variableSize .topLeftImg
              {border: 0 none transparent;
               position: absolute;
               top: 0;
               left: 0;
               }

#variableSize .topRightImg
              {border: 0 none transparent;
               position: absolute;
               top: 0;
               right: 0;
               }

#variableSize .bottomLeftImg
              {border: 0 none transparent;
               position: absolute;
               bottom: 0;
               left: 0;
               }

#variableSize .bottomRightImg
              {border: 0 none transparent;
               position: absolute;
               bottom: 0;
               right: 0;
               }

</style>

<div id="variableSize">
   <img class="topLeftImg" src="path/to/image.png" />
   <img class="topRightImg" src="path/to/image.png" />
   <img class="bottomLeftImg" src="path/to/image.png" />
   <img class="bottomRightImg" src="path/to/image.png" />
   <p>Variable size content.</p>
</div>

Заполнение #variableSize должно быть равно или больше ширины / высоты изображений. Но должно работать? Я попробую сегодня вечером, когда вернусь домой, если ты не попробуешь сначала.

Хорошо, работает демо, на: сайте , где-то. :)

0 голосов
/ 12 ноября 2013

Я считаю, что желаемый эффект может быть достигнут с одним div и несколькими фонами, используя CSS3. Ширина, высота и последний цвет bg могут изменяться, но не забудьте объявить изображения bg в порядке приоритета верхнего слоя, поэтому в приведенном ниже примере topleft.png находится "перед" другими изображениями bg.

Надеюсь, это поможет!

HTML

 <div class="myframedimage"></div>

CSS

.myframedimage { 
  width: 100%;
  height: 100%;
  background:
    url(topleft.png) top left no-repeat,    
    url(topright.png) top right no-repeat,       
    url(bottomleft.png) bottom left no-repeat,   
    url(bottomright.png) bottom right no-repeat, 
    url(top.png) top repeat-x,             
    url(bottom.png) bottom repeat-x,        
    url(left.png) left repeat-y,            
    url(right.png) right repeat-y,     
    url(image.png) center center no-repeat,
    #5d5d5d
}

http://jsfiddle.net/jlynchdotco/2Pkg6/

0 голосов
/ 26 марта 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...