如何使用百分比

时间:2018-02-20 11:34:40

标签: javascript html css svg

我有几张表中包含一些数据。每个表都使用百分比来调整大小,并且可以调整大小。我需要在每个表中包含一些svg并调整它们的大小,以便svg不会更改表的大小。我尝试像这样设置大小(在这种情况下没有额外的行):

<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="23.8345mm" height="100%" version="1.1" 
     style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; 
     fill-rule:evenodd; clip-rule:evenodd" viewBox="0 0 100% 100%" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g id="Layer_x0020_1">
        <metadata id="CorelCorpID_0Corel-Layer"/>
        <rect class="fil0 str0" x="5%" y="5%" width="100%" height="100%"/>
        <rect class="fil0 str0" x="5%" y="5%" width="100%" height="100%"/>
    </g>
</svg>

它使svg更小,但不可调整大小。当用户调整表格大小时,我需要它来改变大小。

这是小提琴:https://jsfiddle.net/vaxobasilidze/1oe8w8wm/12/

Svg不得更改表格大小。相反,表应该看起来像小提琴中的第二个表。如何正确设置百分比?

编辑:以下是设定百分比的另一个小提琴:https://jsfiddle.net/vaxobasilidze/qu20vxcx/3/我做错了什么?

.channels {
  /*border-collapse: collapse;*/
  border-spacing: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  font-weight: bold;
  border: 1px solid rgba(30, 30, 30, 1);
  border-radius: 4px;
  overflow: hidden;
  background: url(images/comment-bg3.png) repeat;
  resize: both;
}

.channels td {
  border-left: 1px solid rgba(30, 30, 30, 1);
}

.channels td:first-child {
  border-left: none;
}

.channelHeader {
  height: 7%;
  text-align: center;
  background: url(images/comment-bg2.png) repeat;
  box-shadow: 0 2px 2px rgba(0,0,0,0.26);
  -webkit-box-shadow: 0 2px 2px rgba(0,0,0,0.26);
  -moz-box-shadow: 0 2px 2px rgba(0,0,0,0.26);
}

.audioVideo {
  height: 79%;
}

.channelInfo {
  height: 7%;
  max-height: 7%;
  text-align: center;
  background: url(images/comment-bg2.png) repeat;
  border-bottom: 1px solid rgba(30, 30, 30, 1);
  border-top: 1px solid rgba(30, 30, 30, 1);
  box-shadow: 0 2px 2px rgba(0,0,0,0.26);
  -webkit-box-shadow: 0 2px 2px rgba(0,0,0,0.26);
  -moz-box-shadow: 0 2px 2px rgba(0,0,0,0.26);
}

.channelInfo td {
  border-radius: 2px 2px 0 0;
}

.channelInfoValues {
  height: 7%;
  max-height: 7%;
  text-align: center;
}

.str0 {stroke:white;stroke-width:3.97;stroke-miterlimit:22.9256}
.str1 {stroke:#999999;stroke-width:3.97;stroke-miterlimit:22.9256}
.fil1 {fill:none}
.fil0 {fill:#333333}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/css-element-queries/0.4.0/ResizeSensor.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/css-element-queries/0.4.0/ElementQueries.min.js"></script>
<table class="channels ui-draggable ui-resizable" style="width: 476px; height: 266px; position: relative;" oncontextmenu="return false;">
  <tbody>
    <tr class="channelHeader ui-draggable-handle">
      <td colspan="5" class="channelName" id="channel1" audiopid="[0x33]" audiostream1="format:mp2,type:audio,pid:[0x33],width:0,height:0" interface="192.168.222.15" method="info" multicast="239.10.20.101" port="6000" protocol="udp" resolution="1920x1080" serviceid="1" servicename="undefined" serviceprovider="provider" videopid="[0x31]" videostream="format:h264,type:video,pid:[0x31],width:1920,height:1080">undefined</td>
      <td colspan="2" class="channelNumber">1</td>
    </tr>
    <tr class="audioVideo">
      <td colspan="5" class="vid"></td>
      <td colspan="2" class="sound">
        <div class="audiodb">
          <div class="audioBackground">
            <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="23.8345mm" height="216.59mm" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
              viewBox="0 0 473.04 4298.61" xmlns:xlink="http://www.w3.org/1999/xlink">
               <g id="Layer_x0020_1">
                <metadata id="CorelCorpID_0Corel-Layer"/>
                <rect class="fil0 str0" x="106.36" y="267.96" width="310.69" height="4028.67"/>
                <rect class="fil0 str0" x="106.36" y="1.98" width="310.69" height="171.7"/>
                <g id="_2182794397872">
                 <line class="fil1 str1" x1="-0" y1="383.47" x2="46.3" y2= "383.47" />
                </g>
                <g id="_2182794397552">
                 <line class="fil1 str1" x1="-0" y1="476.77" x2="46.3" y2= "476.77" />
                </g>
                <g id="_2182794396048">
                 <line class="fil1 str1" x1="0.23" y1="582.02" x2="46.53" y2= "582.02" />
                </g>
                <g id="_2182794399056">
                 <line class="fil1 str1" x1="0.22" y1="674.58" x2="46.53" y2= "674.58" />
                </g>
                <g id="_2182794398768">
                 <line class="fil1 str1" x1="-0" y1="779.08" x2="46.3" y2= "779.08" />
                </g>
                <g id="_2182794398096">
                 <line class="fil1 str1" x1="46.3" y1="872.39" x2="473.04" y2= "872.39" />
                </g>
                <g id="_2182794400656">
                 <line class="fil1 str1" x1="46.3" y1="267.96" x2="473.04" y2= "267.96" />
                </g>
                <g id="_2182794401072">
                 <line class="fil1 str1" x1="-0" y1="1011.62" x2="46.3" y2= "1011.62" />
                </g>
                <g id="_2182794400400">
                 <line class="fil1 str1" x1="-0" y1="1153.4" x2="46.3" y2= "1153.4" />
                </g>
                <g id="_2182794401904">
                 <line class="fil1 str1" x1="-0" y1="1291.89" x2="46.3" y2= "1291.89" />
                </g>
                <g id="_2182794402160">
                 <line class="fil1 str1" x1="0.44" y1="1420.55" x2="46.74" y2= "1420.55" />
                </g>
                <g id="_2182794402384">
                 <line class="fil1 str1" x1="-0" y1="1536.07" x2="46.3" y2= "1536.07" />
                </g>
                <g id="_2182794405264">
                 <line class="fil1 str1" x1="45.95" y1="1662.75" x2="455.89" y2= "1662.75" />
                </g>
                <g id="_2182794405616">
                 <line class="fil1 str1" x1="43.77" y1="2291.58" x2="453.71" y2= "2291.58" />
                </g>
                <g id="_2182794406032">
                 <line class="fil1 str1" x1="41.58" y1="2920.4" x2="451.53" y2= "2920.4" />
                </g>
                <g id="_2182794406384">
                 <line class="fil1 str1" x1="46.3" y1="3454.71" x2="456.25" y2= "3454.71" />
                </g>
                <g id="_2182794407888">
                 <line class="fil1 str1" x1="46.3" y1="3803.9" x2="456.25" y2= "3803.9" />
                </g>
                <g id="_2182794413456">
                 <line class="fil1 str1" x1="47.35" y1="4025.76" x2="457.3" y2= "4025.76" />
                </g>
                <g id="_2182794415312">
                 <line class="fil1 str1" x1="48.4" y1="4153.1" x2="458.35" y2= "4153.1" />
                </g>
                <g id="_2182794415632">
                 <line class="fil1 str1" x1="47.35" y1="4296.63" x2="457.3" y2= "4296.63" />
                </g>
               </g>
              </svg>
          </div>
        </div>
      </td>
    </tr>
    <tr class="channelInfo">
      <td class="resolution">Resolution</td>
      <td class="aspect">Aspect</td>
      <td class="fps">FPS</td>
      <td class="vformat">V-Format</td>
      <td class="aformat">A-Format</td>
      <td>Left</td><td>Right</td>
    </tr>
    <tr class="channelInfoValues">
      <td class="resolValue">1920x1080</td>
      <td class="aspectValue">---</td>
      <td class="fpsValue">---</td>
      <td class="vformatValue">H-264</td>
      <td class="aformatValue">MP2</td>
      <td class="leftBarValue">---</td>
      <td class="rightBarValue">---</td>
    </tr>
    </tbody>
</table>

<table class="channels ui-draggable ui-resizable" style="width: 476px; height: 266px; position: relative;" oncontextmenu="return false;">
  <tbody>
    <tr class="channelHeader ui-draggable-handle">
      <td colspan="5" class="channelName" id="channel1" audiopid="[0x33]" audiostream1="format:mp2,type:audio,pid:[0x33],width:0,height:0" interface="192.168.222.15" method="info" multicast="239.10.20.101" port="6000" protocol="udp" resolution="1920x1080" serviceid="1" servicename="undefined" serviceprovider="provider" videopid="[0x31]" videostream="format:h264,type:video,pid:[0x31],width:1920,height:1080">undefined</td>
      <td colspan="2" class="channelNumber">1</td>
    </tr>
    <tr class="audioVideo">
      <td colspan="5" class="vid"></td>
      <td colspan="2" class="sound">
        <div class="audiodb">
          <div class="audioBackground">
            
          </div>
        </div>
      </td>
    </tr>
    <tr class="channelInfo">
      <td class="resolution">Resolution</td>
      <td class="aspect">Aspect</td>
      <td class="fps">FPS</td>
      <td class="vformat">V-Format</td>
      <td class="aformat">A-Format</td>
      <td>Left</td><td>Right</td>
    </tr>
    <tr class="channelInfoValues">
      <td class="resolValue">1920x1080</td>
      <td class="aspectValue">---</td>
      <td class="fpsValue">---</td>
      <td class="vformatValue">H-264</td>
      <td class="aformatValue">MP2</td>
      <td class="leftBarValue">---</td>
      <td class="rightBarValue">---</td>
    </tr>
    </tbody>
</table>

1 个答案:

答案 0 :(得分:0)

目前,您的SVG大小由widthheight属性决定。

width="23.8345mm" height="216.59mm"

“216.59mm”相当于“819px”。如果您希望SVG根据其父容器进行缩放,请删除widthheight属性。或者用CSS将它们设置为“100%”。

一旦这样做,SVG的大小将受到表格单元格宽度的约束。您的表格单元格宽度为2/7(来自colspans),为476px。

<table  style="width: 476px;..." />