Flask實踐:計算器

MargretCole 8年前發布 | 25K 次閱讀 Flask Web框架

什么是單頁應用(SPA)?

照字面理解,單頁應用( S ingle P age A pplication)就是只有一個頁面的應用,這意味著所有的操作和交互都要在單頁里實現。借助上一篇文章介紹的AJAX技術,這種應用可以很容易實現。請求和數據交換都在后臺處理,節省了重復加載頁面浪費的時間,可以讓用戶體驗更流暢。

盡管如此,因為Heroku的網絡問題,Demo體驗起來并不流暢……你可以在本地安裝,體驗會更好。

計算器

這個計算器的視圖函數和上篇文章里的那個差不多,只多了一個操作符。

@app.route('/_calculate')
def calculate():
    a = request.args.get('num1', '0')
    operator = request.args.get('operator', '+')
    b = request.args.get('num2', '0')
if operator == '/':
        result = eval(a + operator + str(float(b)))
else:
        result = eval(a + operator + b)
return jsonify(result=result)

在模板里,使用三個隱藏字段(input)來存儲兩個操作數和一個操作符,當按下等于按鈕后發送GET請求,獲得計算結果后做相應的處理(完整代碼見Github上的源碼):

$('#resultButton').click(function() {  // 等于按鈕
  $.getJSON($SCRIPT_ROOT + '/_calculate', {
    num1: $('#num1').val(),
    operator: $('#operator').val(),  // 操作符
    num2: $('#num2').val()
  }, function(data) {
if (data.result.toString().length > 16) {  // 驗證計算結果長度
      $('#output').html('Reach Digit Limit');
    } else {
      $('#output').html(data.result);  // 顯示計算結果
    }
  });
});

其實這個計算器用JavaScript實現就夠了……沒太多要說了,補一些用到的CSS技巧吧。

讓按鈕更真實

在這個計算器里,用到了幾個處理技巧,可以讓按鈕更真實。

按下效果

其實是設置按鈕的box-shadow,按下時把box-shadow設為none,同時按鈕向下移動

button {
  box-shadow: 1px 2px #666;
}

button:active {
  box-shadow: none;
  transform: translateY(4px);
}

按鈕上的字不可選擇

雙擊按鈕或是拖動按鈕選擇會出現藍色背景色,設置user-select去掉這個特性

.un-selectable {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

去掉按鈕被選中后的藍色邊線

button:focus {outline:0;}  /* 設為none效果相同,或加上 !important */

 

 

 

 

 本文由用戶 MargretCole 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!