7

次の図に示すように、HTML ページを作成する必要があります。

テキストを含むクリック可能なフォームを作成する方法がわかりません。

テキストは画像であってはならず、その領域を超えてはなりません (オーバーフローのように: 非表示)

HTML でエリアとマップを試しましたが、中にテキストを入れることができません。

どうやってそれをしてください?

ここに画像の説明を入力

編集

Phrogzの回答を読んだ後、SVGで何か他のことを試しましたが、テキストが三角形から外れていますか? 理由がわかりません。

デモ(一番下をチェック): http://jsfiddle.net/r7Jyy/3/

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)   -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Calque_1" 
 xmlns="http://www.w3.org/2000/svg" 
 xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 width="960px" height="560px" 
 viewBox="0 0 960 560" 
 style="enable-background:new 0 0 960 560;" xml:space="preserve">
   <g>
      <polygon style="fill-rule:evenodd;clip-rule:evenodd;fill:none;" points="524.131,495.773 524.771,495.615 524.179,495.282 "/>
      <polygon style="fill-rule:evenodd;clip-rule:evenodd;fill:#CCC;" points="569.476,-10 212.575,320.5 524.179,495.282 572.75,-1.521 "/>
   </g>
   <text transform="matrix(1 0 0 1 236 255)">
      <tspan x="0" y="0" style="fill:#888; font-family:'Arial'; font-size:36.0467;">500% </tspan>
      <tspan x="0" y="30.039" style="fill:#888; font-family:'Arial'; font-size:36.0467;">New</tspan>
    </text>
 </svg>
4

2 に答える 2

7

クリッピング パスを使用してテキストを任意の領域にクリップする SVG の例を次に示します。

デモ: http://jsfiddle.net/r7Jyy/

<svg xmlns="http://www.w3.org/2000/svg">
  <defs><clipPath id="triangle1">
    <polygon points="10,30 180,60 250,10"/>
  </clipPath></defs>
  <polygon points="10,30 180,60 250,10" fill="none" stroke="black"/>
  <text x="20" y="50" clip-path="url(#triangle1)">Hello World</text>
</svg>

SVG のフィルター効果を使用して、エンボス加工された内側の影をテキストに作成します。以下に例を示します (ニーズに完全には一致しません): http://www.w3.org/2002/05/text.svg

于 2013-05-06T19:03:01.807 に答える
5

ここで CSS3 を試してみるのもいいかもしれません ...

コードをもう少しクロスブラウザにする必要があります (例: を追加する-moz-transformなど)。

そして、文字の内側の影を実現するためにもう少し努力する必要がありますが、これは次の方法で行うことができます:

HTML :

  <div class='container'>
    <div class='text'>Hello<br />World<br /> I'm Steffi</div>
    <div class='triangleA'></div>
    <div class='triangleB'>
      <div class='text'>
        Can you <br />
        Help Me Please</div>
    </div>
    <div class='triangleC'>
      <div class='text'>
        Stackover-<br />flow.com
      </div>
    </div>
  </div>

およびCSS:

.container {
  position: absolute;
  overflow: hidden;
  width: 550px;
  height: 500px;
  background: #9f9f9f;
}

div.text {
  font: bold 45px 'Helvetica';
  text-align: left;
  margin: 120px 0 0 180px;
  line-height: 40px;
  color: #3f3f3f;
  text-transform: uppercase;
  text-shadow: 0px 1px rgba(255,255,255,.4);
}

div.triangleA, div.triangleB, div.triangleC {
  position: absolute;
}

div.triangleA {
  background: #afafaf;
  width: 500px;
  height: 600px;
  -webkit-transform: rotate(45deg);
  top: -350px;
  left: -230px; 
}

div.triangleB {
  background: rgba(255,255,255,.4);
  overflow: hidden;
  width: 500px;
  height: 600px;
  -webkit-transform: rotate(-70deg);
  top: 200px;
  left: -230px; 
}

div.triangleB div.text {
  -webkit-transform: rotate(70deg);
  margin-left: 240px;
  margin-top: 550px;
  width: 500px;
}

div.triangleC {
  background: #8f8f8f;
  -webkit-transform: rotate(-25deg);
  top: 370px;
  left: 100px;
  height: 300px;
  width: 600px;
  overflow: hidden;
}

div.triangleC div.text { 
    -webkit-transform: rotate(25deg); 
    margin: 0;
    margin-left: 190px;
    margin-top: 60px;
}

デモ: http://jsbin.com/orazod/1/edit

于 2013-05-07T13:15:31.397 に答える