3

側面と上部に「ハイライト」があるボックスを作成しようとしています。

ボックスの CSS は非常にシンプルでしたが、この「ハイライト」をデザインに導入したことで、CSS がさらに複雑になりました...

私は多くのことを試しましたが、それらが役立つかどうかはわかりませんが、これが私の最新のものです:

/* Define the Main Navigation Drop Downs */
#mn_navigation .dd {position:relative;width:226px;padding:29px 0 0;background:transparent url("//beta.example.co.uk/_images/_global/dd_handle.png") no-repeat;z-index:1000;}
#mn_navigation .dd nav {padding:30px 0;background:#3E5032 url("//beta.example.co.uk/_images/_global/dd_bg.png");border-radius:3px;}
#mn_navigation .dd nav a {font-family:Arial, Helvetica, sans-serif;font-size:12px;color:#fff !important;height:25px;line-height:25px;}

私が実際にこれを自分でソートしようとしたことを示すために上記を投稿したことに注意してください。HTML の再構築が必要になる可能性があるため、上記のコードはおそらく出発点としては役に立ちません。

これが現在の HTML です (おそらく再構築する必要があります):

<div id="dd_foo" class="dd">
    <nav>
        <a href="//beta.example.co.uk/menu/" title="LINK TITLE">LINK</a>
    </nav>
</div>

考えられる再構築は次のとおりです (次のようなものです)。

<div id="dd_foo" class="dd">
    <div class="handle"><!-- Dropdown Handle --></div>
    <nav>
        <a href="//beta.example.co.uk/menu/" title="LINK TITLE">LINK</a>
    </nav>
</div>

これは、ボックスを次のように表示する必要があるものです (上部と側面の半分にあるかすかな白い境界線に注意してください)。

また、個別の要素 (ハンドルと背景) に分割されたボックスも含めました。

ドロップダウン ボックス

巧妙なオーバーラップとネストされたdivを使用してこれを行う方法を理解できると思いますが、理想的には、これに頼りたくありません...誰か別の解決策を提案できますか?

4

1 に答える 1

2

最も簡単なアプローチ

シンプルなボックス シャドウを使用してこれを実現できます。

.plaque {
    box-shadow: inset 0 1px 1px 0 rgba(255, 255, 255, 0.32);

    /*...*/
}

jsbin で1 つのクラスと div を使用する例を次に示します。

貼り付けコードをコピー

このコードは最新のブラウザー専用です。ie < 9 およびその他のサポートされていないブラウザーが爆発する可能性があります。

.plaque:after {
  top: -9px;
  content: " ";
  height: 11px;
  width: 30px;
  position: absolute;
  pointer-events: none;
  left: 50%;
  margin-left: -15px;
  display: block;
  background-repeat: no-repeat;
}


.plaque {
  width: 250px;
  height: 100px;
  display: block;
  border: 0;
  outline: 0;
  padding: 12px 16px;
  line-height: 1.4;
  box-shadow: inset 0 1px 1px 0 rgba(255, 255, 255, 0.32);
  border-radius: 5px;
  border: 1px solid transparent;
  font-family: sans-serif;
  color: white;
  font-size: 1.2em;
  text-overflow: ellipsis;
  position: relative;
  top: 6px;
}

/* Use whatever background you want */
.plaque { background-color: green; }

.plaque:after { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcJJREFUeNqMUktPU0EU/mZuL6Up1RCjC4oRau4t4FJ84EKID/ZAjI9/6Mo/4MadG5dqJGjBatpyuY+2UNreeXDOBE0MNHGSSWZyzvnOd77zicdbd+EVJKyxGPSHmC4XIYSAMQYCoJhn81wJKSnHWhR8D1oZl69yhamiD8GBSefpywc2XKzjy7fP+PDuk5iUJxnksvvkxX1buxkgThOEt5exvr1qJ+XKy5CfvXpow9oSsn6GdqeF40EPK+GKY/ZfTNa3Vm1AI6TdFAeNfQgp0CKgrJehVg1AGl5gJLTWfxGfv15zI3BBnB5CehJGG5Cw8EjY6tw8KjNXsfv9K96//SguMOERgoU6+ic9NH8eQClNGzDQBMLb4FU1fzdxFB+hev0WNnbu2X802TxnkGQJoriNymwZHrFgAbhdidbOK+YTxR0ojLEc3sHmm0dOI8Gq10n9OI1xGLVcMvuGGYyHOYqlKcfK9wvOF3/i12ZvoFK+gsavPUgGSLsJkm4En4xDTqMi45iUZqZdd34zJY7L8was2enoGMHCEmS3l6LxYx9qrJ2I7FTNelBxPlKuYDgYu9nzUe6cenoygqF/J2o7AmcCDACumSjtgWp8aAAAAABJRU5ErkJggg==); }
于 2013-04-03T16:04:56.207 に答える