とりあえず「box-sizing:border-box」

通常CSSでは、実際に表示される要素の幅は「width(height) + padding」になります。

.class1 {
  width: 50px;
  height: 30px;
  padding: 10px;
}

上記の場合、.class1 の実際に表示される横幅70px、縦幅50pxになります。
そこで下記のように「box-sizing」の記述を加えます。

.class1 {
  width: 50px;
  height: 30px;
  padding: 10px;
  box-sizing: border-box;
}

「box-sizing: border-box」を指定することで、widthとheightの値が表示される幅の絶対値に指定され、その中の範囲でpaddingが取られることになります。

幅とpaddingの計算に悩まされることがなくなります。

div, table, th, td, input, textarea, .border-box {
  box-sizing: border-box;
}

上記のように、とりあえず「box-sizing」を指定しておいて良いと思えるほど便利ですが、inputなどのフォームパーツに関してはブラウザ標準の表示を崩すことになるので、きちんとCSSを組み直す必要があります。