【发布时间】:2017-11-09 21:40:42
【问题描述】:
1) 我正在练习画布线条。所以我改变了画布标签的大小,并画了线。但这条线是模糊的。为什么会发生,如何改变它?
2)我有第二个问题:是否可以将线的坐标与画布标签内的标签 li 连接起来?例如:当我要点击 li 项时,二次曲线的端点应该直接移动到 li 项。
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.lineWidth = 100;
ctx.lineWidth = 1; // толщина линии
ctx.moveTo(11, 100); //передвигаем перо
ctx.lineTo(350, 100); //рисуем линию
ctx.fillStyle = "purple";
ctx.strokeStyle = "purple";
ctx.stroke();
ctx.lineWidth=100;
ctx.lineWidth= 1;
ctx.moveTo(11,100);
ctx.quadraticCurveTo(26, 0, 50, 100);
ctx.stroke();
* {
margin: 0;
padding: 0;
}
.ruler {
display: flex;
flex-direction: column;
background: url("sprite.webp") no-repeat;
padding-bottom: 67px;
width: 877px;
margin: 0 auto;
}
.ruler-container {
white-space: nowrap;
margin: 0 auto;
max-width: 960px;
padding-top: 270px;
}
.ruler-list li {
list-style-type: none;
display: flex;
}
.ruler-list__item {
font-size: 22px;
margin-right: 35px;
margin-left: -7px;
}
.double__numbers {
margin-right: 24px;
}
.bold {
/*margin-top: -4px;*/
font-weight: bold;
}
.ruler-list {
display: flex;
flex-direction: row;
margin-top: 19px;
margin-left: 30px;
padding: 0;
}
.ruler-axis {
width: 813px;
height: 2px;
background-color: #000000;
margin-left: 33px;
margin-top: 20px;
position: relative;
}
.ruler-axis__item-block {
position: relative;
width: 11px;
height: 1px;
transform: rotate(90deg);
background-color: #000000;
top: -12px;
margin-right: 31px;
margin-left: -7px;
font-size: 20px;
display: inline-block;
}
.ruler-axis::before {
content: " ";
position: absolute;
width: 16px;
height: 2px;
right: -4px;
top: 6px;
transform: rotate(-46deg);
background-color: #000000;
}
.ruler-axis::after {
content: " ";
position: absolute;
width: 16px;
height: 2px;
right: -4px;
top: -6px;
transform: rotate(46deg);
background-color: #000000;
}
.double {
margin-right: 34px;
}
input[type='number'] {
-moz-appearance: textfield;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
.user-input {
display: flex;
width: 500px;
margin: 0 auto;
margin-bottom: 95px;
}
input[type='number'] {
padding-bottom: 0;
text-align: center;
padding-top: 0;
padding-left: 0;
width: 76px;
font-size: 66px;
}
span {
display: block;
}
#canvas {
position: absolute;
width: 818px;
height: 132px;
margin-top: -68px;
}
.user-input span {
font-size: 75px;
margin-left: 20px;
}
.input__container {
margin-left: 21px;
margin-top: 0;
}
.hidden {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/postscribe/2.0.8/postscribe.min.js"></script>
<main class="main-class">
<div class="ruler-container">
<div class="user-input">
<span class="user-input__number">7</span>
<span class="user-input__sign">+</span>
<span class="user-input__number">8</span>
<span class="user-inupt__total">=</span>
<span class="user-inupt__mockup">?</span>
<div class="input__container hidden">
<label for="result" class="input-container__label">
<input type="number" max="500" class="input-container__input-block" id="result">
</label>
</div>
</div>
<div class="ruler">
<div class="ruler-axis">
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
<div class="ruler-axis__item-block"></div>
</div>
<canvas id="canvas">
Your browser does not support the HTML5 canvas tag.</canvas>
<ul class="ruler-list">
<li class="ruler-list__item bold">0</li>
<li class="ruler-list__item">1</li>
<li class="ruler-list__item">2</li>
<li class="ruler-list__item">3</li>
<li class="ruler-list__item">4</li>
<li class="ruler-list__item bold">5</li>
<li class="ruler-list__item">6</li>
<li class="ruler-list__item">7</li>
<li class="ruler-list__item">8</li>
<li class="ruler-list__item">9</li>
<li class="ruler-list__item bold double__numbers">10</li>
<li class="ruler-list__item double__numbers">11</li>
<li class="ruler-list__item double__numbers">12</li>
<li class="ruler-list__item double__numbers">13</li>
<li class="ruler-list__item double__numbers">14</li>
<li class="ruler-list__item double__numbers">15</li>
<li class="ruler-list__item double__numbers">16</li>
<li class="ruler-list__item double__numbers">17</li>
<li class="ruler-list__item double__numbers">18</li>
<li class="ruler-list__item double__numbers">19</li>
<li class="ruler-list__item bold double__numbers">20</li>
</ul>
</div>
</div>
</main>
【问题讨论】:
-
画布内部仍然只有 400px 宽。您需要通过 html (
<canvas id="canvas" width="818" height="132">) 或通过 javascript 设置宽度/高度,css 只会调整大小(拉伸或收缩)输出。
标签: javascript html canvas